<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta content="width=device-width, initial-scale=1" name="viewport"><meta content="Complex numbers z = a + bi are represented internally as fastmath.vector.Vec2 type and can be created with complex function." property="og:description"><meta content="Complex numbers" property="og:title"><meta content="article:clerk" property="og:type"><meta content="summary_large_image" name="twitter:card"><script src="https://cdn.tailwindcss.com?plugins=typography" type="text/javascript"></script><script>tailwind.config = {
  darkMode: "class",
  content: ["./tw/viewer.js", "./tw/**/*.edn"],
  safelist: ['dark'],
  theme: {
    extend: {},
    fontFamily: {
      sans: ["Fira Sans", "-apple-system", "BlinkMacSystemFont", "sans-serif"],
      serif: ["PT Serif", "serif"],
      mono: ["Fira Mono", "monospace"]
    }
  },
  variants: {
    extend: {},
  },
  plugins: [],
}
</script><style type="text/tailwindcss">@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  html {
    font-size: 18px;
  }
  @media (max-width: 600px) {
    html {
      font-size: 16px;
    }
  }
  .font-condensed { font-family: "Fira Sans Condensed", sans-serif; }
  .font-inter     { font-family: "Inter", sans-serif; }
  body {
    @apply font-serif antialiased text-gray-900 sm:overscroll-y-none;
  }
  code, .code {
    @apply font-mono text-sm text-gray-900 bg-slate-50 px-0.5 py-px rounded dark:bg-gray-800;
  }
  code::before, code::after { @apply content-none !important; }
  h1, h3, h4, h5, h6 {
    @apply font-condensed font-bold mt-8 first:mt-0;
  }
  h2 {
    /*We cannot collapse margins due to nesting but we want to*/
    /*keep the h2’s large margin visible*/
    @apply font-condensed font-bold mt-8 first:mt-2;
  }
  h1 { @apply text-4xl; }
  h2 { @apply text-3xl; }
  h3 { @apply text-2xl; }

  @media print {
      h1 { @apply text-2xl !important; }
      h2 { @apply text-xl !important; }
      h3 { @apply text-lg !important; }
  }

  button { @apply focus:outline-none; }
  strong { @apply font-bold; }
  em     { @apply italic; }
  pre    { @apply m-0 font-mono; }
  table img { @apply inline-block; }
}

/* Compatibility */
/* --------------------------------------------------------------- */
/* TODO: Verify which colors are in use and replace with Tailwind
   colors accordingly. Move Nj-specific styles out of here. */

:root {
  --teal-color: #31afd0;
  --dark-teal-color: #095960;
  --near-black-color: #2e2e2c;
  --red-color: #d64242;
  --dark-blue-color: #1f2937;
  --dark-blue-60-color: rgba(28, 42, 56, 0.6);
  --gray-panel-color: rgba(239, 241, 245, 1.000);
  --brand-color: var(--dark-blue-color);
  --link-color: #5046e4;
  --command-bar-selected-color: var(--teal-color);
}

.serif      { @apply font-serif; }
.sans-serif { @apply font-sans; }
.monospace  { @apply font-mono; }
.inter      { @apply font-inter; }

.border-color-teal { border-color: var(--dark-teal-color); }
.teal { color: var(--teal-color); }
.bg-dark-blue { background: var(--dark-blue-color); }
.bg-dark-blue-60 { background: rgba(28, 42, 56, 0.6); }
.bg-gray-panel { background: var(--gray-panel-color); }
.text-dark-blue  { color: var(--dark-blue-color); }
.text-dark-blue-60 { color: var(--dark-blue-60-color); }
.border-dark-blue-30 { border-color: rgba(28, 42, 56, 0.6); }
.text-brand { color: var(--dark-blue-color); }
.bg-brand { background: var(--dark-blue-color); }
.text-selected { color: white; }
.red { color: var(--red-color); }

/* Disclose Button */
/* --------------------------------------------------------------- */

.disclose {
  @apply content-none border-solid cursor-pointer inline-block relative mr-[3px] top-[-2px] transition-all;
  border-color: var(--near-black-color) transparent;
  border-width: 6px 4px 0;
}
.disclose:hover {
  border-color: var(--near-black-color) transparent;
}
.dark .disclose,
.dark .disclose:hover {
  border-color: white transparent;
}
.disclose.collapsed {
  @apply rotate-[-90deg];
}

/* Layout */
/* --------------------------------------------------------------- */

.page {
  @apply max-w-5xl mx-auto px-12 box-border flex-shrink-0;
}
.max-w-prose { @apply max-w-[46rem] !important; }
.max-w-wide  { @apply max-w-3xl !important; }

/* List Styles */
/* --------------------------------------------------------------- */

.task-list-item + .task-list-item,
.markdown-viewer ul ul {
  @apply mt-1 mb-0;
}

/* compact TOC */
.markdown-viewer .toc ul {
  list-style: none;
  @apply my-1;
}

/* Code Viewer */
/* --------------------------------------------------------------- */

.code-viewer {
  @apply font-mono bg-slate-100 rounded-sm text-sm overflow-x-auto dark:bg-gray-800;
}
.code-listing  {
    @apply -ml-8 -mr-8 relative !important;
}
.code-viewer .cm-content {
  @apply py-4 px-8;
}
@media (min-width: 960px){
    .notebook-viewer .code-viewer .cm-content {
        @apply pl-12;
    }
    .notebook-viewer .code-listing {
        width: 48rem !important;
        @apply -ml-12 mr-0 !important;
    }
}
/* Don’t show focus outline when double-clicking cell in Safari */
.cm-scroller { @apply focus:outline-none; }

/* Syntax Highlighting */
/* --------------------------------------------------------------- */

.inspected-value { @apply text-xs font-mono leading-[1.25rem]; }
.cmt-strong, .cmt-heading { @apply font-bold; }
.cmt-italic, .cmt-emphasis { @apply italic; }
.cmt-strikethrough { @apply line-through; }
.cmt-link { @apply underline; }
.untyped-value { @apply whitespace-nowrap; }

.cm-editor, .cmt-default, .result-viewer {
  @apply text-slate-800 dark:text-slate-300;
}
.cmt-keyword {
  @apply text-purple-800 dark:text-pink-400;
}
.cmt-atom, .cmt-bool, .cmt-url, .cmt-contentSeparator, .cmt-labelName {
  @apply text-blue-900 dark:text-blue-300;
}
.cmt-inserted, .cmt-literal {
  @apply text-emerald-700 dark:text-emerald-200;
}
.cmt-string, .cmt-deleted {
  @apply text-rose-700 dark:text-sky-300;
}
.cmt-italic.cmt-string {
  @apply dark:text-sky-200;
}
.cmt-regexp, .cmt-escape {
  @apply text-orange-500 dark:text-orange-300;
}
.cmt-variableName {
  @apply text-blue-800 dark:text-sky-300;
}
.cmt-typeName, .cmt-namespace {
  @apply text-emerald-600 dark:text-emerald-300;
}
.cmt-className {
  @apply text-teal-600 dark:text-teal-200;
}
.cmt-macroName {
  @apply text-teal-700 dark:text-teal-200;
}
.cmt-propertyName {
  @apply text-blue-700 dark:text-blue-200;
}
.cmt-comment {
  @apply text-slate-500 dark:text-slate-400;
}
.cmt-meta {
  @apply text-slate-600 dark:text-slate-400;
}
.cmt-invalid {
  @apply text-red-500 dark:text-red-300;
}

.result-data {
  @apply font-mono text-sm overflow-x-auto whitespace-nowrap leading-normal;
}
.result-data::-webkit-scrollbar, .path-nav::-webkit-scrollbar {
  @apply h-0;
}
.result-data-collapsed {
  @apply whitespace-nowrap;
}
.result-data-field {
  @apply ml-4 whitespace-nowrap;
}
.result-data-field-link{
  @apply ml-4 whitespace-nowrap cursor-pointer;
}
.result-data-field-link:hover {
  @apply text-black bg-black/5;
}
.result-text-empty {
  color: rgba(0,0,0,.3);
}
.browsify-button:hover {
  box-shadow: -2px 0 0 2px #edf2f7;
}

/* Prose */
/* --------------------------------------------------------------- */

.notebook-viewer,
.markdown-viewer {
  @apply prose
    dark:prose-invert
    prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline
    dark:prose-a:text-blue-300
    prose-p:mt-4 prose-p:leading-snug
    prose-ol:mt-4 prose-ol:mb-6 prose-ol:leading-snug
    prose-ul:mt-4 prose-ul:mb-6 prose-ul:leading-snug
    prose-blockquote:mt-4 prose-blockquote:leading-snug
    prose-hr:mt-6 prose-hr:border-t-2 prose-hr:border-solid prose-hr:border-slate-200
    prose-figure:mt-4
    prose-figcaption:mt-2 prose-figcaption:text-xs
    prose-headings:mb-4
    prose-table:mt-0
    prose-th:mb-0
    prose-img:my-0
    prose-code:font-medium prose-code:bg-slate-100
    max-w-none;
}
.markdown-viewer blockquote p:first-of-type:before,
.markdown-viewer blockquote p:last-of-type:after {
  @apply content-none;
}
.markdown-node-viewer.result-viewer.fragment-item {
    @apply mb-0 !important;
}

/* Images */
/* --------------------------------------------------------------- */


/* Todo Lists */
/* --------------------------------------------------------------- */

.contains-task-list {
  @apply pl-6 list-none;
}
.contains-task-list input[type="checkbox"] {
  @apply appearance-none h-4 w-4 rounded border border-slate-200 relative mr-[0.3rem] ml-[-1.5rem] top-[0.15rem];
}
.contains-task-list input[type="checkbox"]:checked {
  @apply border-indigo-600 bg-indigo-600 bg-no-repeat bg-contain;
  background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e");
}

/* Markdown TOC */
/* --------------------------------------------------------------- */

.markdown-viewer .toc      { @apply mt-4; }
.markdown-viewer h1 + .toc { @apply mt-8; }

.markdown-viewer .toc h1,
.markdown-viewer .toc h2,
.markdown-viewer .toc h3,
.markdown-viewer .toc h4,
.markdown-viewer .toc h5,
.markdown-viewer .toc h6 {
  @apply text-base text-indigo-600 font-sans my-0;
}
.markdown-viewer .toc a {
  @apply text-indigo-600 font-normal no-underline hover:underline;
}
.markdown-viewer .toc li    { @apply m-0; }
.markdown-viewer .toc ul ul { @apply pl-4; }

/* Notebook Spacing */
/* --------------------------------------------------------------- */

.markdown-viewer *:first-child:not(.code-viewer):not(li):not(h2):not(.sidenote) { @apply mt-0; }
/*.viewer + .viewer { @apply mt-6; }*/
.viewer + .result-viewer { @apply mt-0; }
.code-viewer + .result-viewer { @apply mt-3; }
.markdown-viewer + .markdown-viewer { @apply mt-0; }

/* Sidenotes */
/* --------------------------------------------------------------- */

.sidenote-ref {
  @apply top-[-0.5em] w-auto h-auto inline border-0 bg-transparent m-0 pointer-events-none;
}
.sidenote {
  @apply block font-sans text-xs mt-4 bg-slate-100 dark:bg-slate-800 p-4;
  font-style: normal;
  font-weight: normal;
}
.sidenote-container {
  @apply mb-4;
}
@media (min-width: 860px) {
  .sidenote sup { @apply inline; }
  .sidenote-column {
    @apply w-[165px] absolute right-0 top-0 -mr-[205px];
  }
  .sidenote {
    @apply bg-transparent dark:bg-transparent p-0;
  }
  .sidenote:first-child {
    @apply mt-1;
  }
  .sidenotes-layout .markdown-viewer {
    @apply pr-[241px];
  }
  .sidenote-container {
    @apply relative mb-0;
  }
  .sidenotes-layout h1 {
    @apply w-[756px] !important;
  }
}
.code-viewer + .viewer:not(.code-viewer):not(.code-viewer-folded),
.code-viewer-folded + .viewer:not(.code-viewer):not(.code-viewer-folded),
.result-viewer:not(.markdown-node-viewer) + .result-viewer {
  @apply mt-2;
}
.code-viewer + .code-viewer-folded {
  @apply mt-4;
}
.result-viewer {
  @apply leading-tight mb-6;
}
.code-viewer.fragment-item.result-viewer {
  @apply mb-0 !important;
}
.result-viewer figure {
  @apply mt-0 !important;
}
@media (min-width: 768px) {
  .devcard-desc > div {
    @apply max-w-full m-0;
  }
}

/* Command Palette */
/* --------------------------------------------------------------- */

.nj-commands-input {
  @apply bg-transparent text-white;
}
.nj-context-menu-item:hover:not([disabled]) {
  @apply cursor-pointer;
  background-color: rgba(255,255,255,.14);
}

/* Devdocs */
/* --------------------------------------------------------------- */

.logo, .logo-white {
  @apply block indent-[-999em];
  background: url(/images/nextjournal-logo.svg) center center no-repeat;
}
.devdocs-body {
  @apply font-inter;
}

/* Workarounds */
/* --------------------------------------------------------------- */

/* Fixes vega viewer resizing into infinity */
.vega-embed .chart-wrapper { @apply h-auto !important; }
/* fixes fraction separators being overridden by tw’s border-color */
.katex * { @apply border-black; }

@media print {
    .dark-mode-toggle,
    .toc-toggle { @apply hidden; }
    .notebook-viewer { @apply pt-0; font-size: 12pt !important; margin-left: 0 !important; }
    .code-viewer .cm-content,
    .viewer-code .cm-content { @apply whitespace-pre-wrap !important; overflow: none; }
    .code-viewer .cm-line { font-size: 12pt !important; }
    html * { page-break-inside: avoid !important; }
    .toc-panel { @apply hidden; }
}
</style><script src="https://storage.clerk.garden/nextjournal/clerk-assets@3mwzShgnuyfhgFN9ahRYKqV32K11/viewer.js?immutable=true" type="module"></script><link href="https://cdn.jsdelivr.net/npm/katex@0.13.13/dist/katex.min.css" rel="stylesheet" type="text/css"><link href="https://fonts.bunny.net" rel="preconnect"><link href="https://fonts.bunny.net/css?family=fira-mono:400,700%7Cfira-sans:400,400i,500,500i,700,700i%7Cfira-sans-condensed:700,700i%7Cpt-serif:400,400i,700,700i" rel="stylesheet" type="text/css"></head><body class="dark:bg-gray-900"><div id="clerk"></div><script type="module">let viewer = nextjournal.clerk.sci_env
let state = "{:bundle? false, :path->doc {\"notebooks/complex_quaternion\" {:path [], :nextjournal/value {:toc [{:title \"Complex numbers\", :emoji nil, :path \"#complex-numbers\", :items [{:title \"Constants\", :emoji nil, :path \"#constants\", :items []} {:title \"Functions\", :emoji nil, :path \"#functions\", :items [{:title \"Creation\", :emoji nil, :path \"#creation\", :items []} {:title \"Fields\", :emoji nil, :path \"#fields\", :items []} {:title \"Predicates\", :emoji nil, :path \"#predicates\", :items []} {:title \"Basic operations\", :emoji nil, :path \"#basic-operations\", :items []} {:title \"Trigonometric\", :emoji nil, :path \"#trigonometric\", :items [{:title \"Basic\", :emoji nil, :path \"#basic\", :items []} {:title \"Hyperbolic\", :emoji nil, :path \"#hyperbolic\", :items []}]} {:title \"Power and logarithm\", :emoji nil, :path \"#power-and-logarithm\", :items []}]} {:title \"List of symbols\", :emoji nil, :path \"#list-of-symbols\", :items []}]} {:title \"Quaternions\", :emoji nil, :path \"#quaternions\", :items [{:title \"Constants\", :emoji nil, :path \"#constants-2\", :items []} {:title \"Functions\", :emoji nil, :path \"#functions-2\", :items [{:title \"Creation\", :emoji nil, :path \"#creation-2\", :items []} {:title \"Fields\", :emoji nil, :path \"#fields-2\", :items []} {:title \"Predicates\", :emoji nil, :path \"#predicates-2\", :items []} {:title \"Basic operations\", :emoji nil, :path \"#basic-operations-2\", :items []} {:title \"Trigonometric\", :emoji nil, :path \"#trigonometric-2\", :items [{:title \"Basic\", :emoji nil, :path \"#basic-2\", :items []} {:title \"Hyperbolic\", :emoji nil, :path \"#hyperbolic-2\", :items []}]} {:title \"Power and logarithm\", :emoji nil, :path \"#power-and-logarithm-2\", :items []} {:title \"Rotations\", :emoji nil, :path \"#rotations\", :items []}]} {:title \"List of symbols\", :emoji nil, :path \"#list-of-symbols-2\", :items []}]}], :sidenotes? false, :toc-visibility true, :atom-var-name->state #viewer-eval (nextjournal.clerk.render/intern-atoms! {}), :ns #viewer-eval (ns complex-quaternion), :file \"notebooks/complex_quaternion.clj\", :scope complex-quaternion, :bundle? false, :header {:path [], :nextjournal/value [:div.viewer.w-full.max-w-prose.px-8.not-prose.mt-3 [:div.mb-8.text-xs.sans-serif.text-slate-400 nil [:<> [:a.font-medium.border-b.border-dotted.border-slate-300.hover:text-indigo-500.hover:border-indigo-500.dark:border-slate-500.dark:hover:text-white.dark:hover:border-white.transition {:href \"./../../\"} \"Index\"] [:span.mx-2 \"•\"]] [:span \"Generated with \" [:a.font-medium.border-b.border-dotted.border-slate-300.hover:text-indigo-500.hover:border-indigo-500.dark:border-slate-500.dark:hover:text-white.dark:hover:border-white.transition {:href \"https://clerk.vision\"} \"Clerk\"] \" from \" [:a.font-medium.border-b.border-dotted.border-slate-300.hover:text-indigo-500.hover:border-indigo-500.dark:border-slate-500.dark:hover:text-white.dark:hover:border-white.transition {:href nil} \"notebooks/complex_quaternion.clj\" nil]]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}, :open-graph {:type \"article:clerk\", :title \"Complex numbers\", :description \"Complex numbers z = a + bi are represented internally as fastmath.vector.Vec2 type and can be created with complex function.\"}, :title \"Complex numbers\", :blocks [{:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtVAxGhQa97wrRAkSAzhdYWqHTw7A\"} [\"h1\" {:id \"complex-numbers\"} [:<> \"Complex numbers\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtVAxGhQa97wrRAkSAzhdYWqHTw7A\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value \"(require '[fastmath.complex :as c])\", :nextjournal/render-opts {:loc {:line 17, :end-line 17, :column 1, :end-column 36}, :id \"complex-quaternion/anon-expr-5drGdHu4e8HMoL8Kj3nn8srNudYMV1-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value nil, :nextjournal/viewer {:name nextjournal.clerk.viewer/nil-viewer, :render-fn #viewer-fn (fn [_] [:span.cmt-default.inspected-value \"nil\"]), :hash \"5ds3x8WPypHpZ82nScxBB4onExS7LG\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drGdHu4e8HMoL8Kj3nn8srNudYMV1-result\"}}, :nextjournal/blob-id \"8VxMLktXDdtVMc8iXimmtZ8NSKSLuY18iS4X8ByUYe38wJcyDLyPHV17oQkSvYDuZuMZzBdwAVhWgxupuvjsQC4uMd\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drGdHu4e8HMoL8Kj3nn8srNudYMV1-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dswWUSEswuPEGSEkF9ht8K2URXJai\"} [:p [:<> \"Complex numbers \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z = a + bi\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" are represented internally as \"] [:code [:<> \"fastmath.vector.Vec2\"]] [:<> \" type and can be created with \"] [:code [:<> \"complex\"]] [:<> \" function.\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dswWUSEswuPEGSEkF9ht8K2URXJai\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value \"(c/complex 1 2)\", :nextjournal/render-opts {:loc {:line 21, :end-line 21, :column 1, :end-column 16}, :id \"complex-quaternion/anon-expr-5duBYW72RTAS4G7uhCDSo1kvEoiAYF-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren (\"]\"), :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5duBYW72RTAS4G7uhCDSo1kvEoiAYF-result\"}}, :nextjournal/blob-id \"5dsPbCmmjbZR2y4WvVvv91ywFEcCQN\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5duBYW72RTAS4G7uhCDSo1kvEoiAYF-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5drYocdstngk6Xgs4qiHZacm1TGtVt\"} [:p [:<> \"Implementation is based on the source code of \"] [:a {:href \"https://ece.uwaterloo.ca/~dwharder/C++/CQOST/src/Complex.cpp\"} [:<> \"CQOST library\"]] [:<> \". Most of the functions distinguish \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"-0.0\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" and \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0.0\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \", it's visible when function is discontinuous at \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0.0\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \".\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5drYocdstngk6Xgs4qiHZacm1TGtVt\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value \"(c/log (c/complex -2.0 -0.0))\", :nextjournal/render-opts {:loc {:line 25, :end-line 25, :column 1, :end-column 30}, :id \"complex-quaternion/anon-expr-5dr4u8at5Qd5dhcsB5twkSoRiLMwrM-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value 0.6931471805599453, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1], :nextjournal/value -3.141592653589793, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren (\"]\"), :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dr4u8at5Qd5dhcsB5twkSoRiLMwrM-result\"}}, :nextjournal/blob-id \"5drFBVxCLEMcS3WtSd4oLDwT6JYWCU\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dr4u8at5Qd5dhcsB5twkSoRiLMwrM-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value \"(c/log (c/complex -2.0 0.0))\", :nextjournal/render-opts {:loc {:line 26, :end-line 26, :column 1, :end-column 29}, :id \"complex-quaternion/anon-expr-5dtHyeeXxe2ULiugNTf58RRxFskksT-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value 0.6931471805599453, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1], :nextjournal/value 3.141592653589793, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren (\"]\"), :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtHyeeXxe2ULiugNTf58RRxFskksT-result\"}}, :nextjournal/blob-id \"5dtQziye2DWYWEoz4LKgL8JsYMqnG1\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtHyeeXxe2ULiugNTf58RRxFskksT-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dsF5BsKjSoUrzzgbdzamhX1yGsddN\"} [:p [:<> \"Plots are based on domain-coloring where (in HSB color space):\"]] [:ul [:li [:<> [:<> \"hue - represents argument\"]]] [:li [:<> [:<> \"brighness - represents \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"log_2\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" of absolute value\"]]]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dsF5BsKjSoUrzzgbdzamhX1yGsddN\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value \"(u/complex-graph identity)\", :nextjournal/render-opts {:loc {:line 33, :end-line 33, :column 1, :end-column 27}, :id \"complex-quaternion/anon-expr-5drLMKNsa1HAdFyrpskjCC8kRqVpGv-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/content-type \"image/png\", :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VuwpPxvvjUJGrMiK8YuUHLSPxCMdA53vszW6CdakCbaqL7skQAiqxK2LGHLVtmLtR9NLjPP8cow244iyYDh2kG4BH.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drLMKNsa1HAdFyrpskjCC8kRqVpGv-result\"}}, :nextjournal/blob-id \"5drzzy8ch2Kvgm7pNuxXUJZSgdLdxM\"}, :nextjournal/width :wide, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drLMKNsa1HAdFyrpskjCC8kRqVpGv-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5drYws9ECAKNZK5LpA2RBQdF2tE8qG\"} [\"h2\" {:id \"constants\"} [:<> \"Constants\"]] [:p [:<> \"Basic predefined values\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5drYws9ECAKNZK5LpA2RBQdF2tE8qG\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"value\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value I, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"i\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value -I, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"-i\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value ONE, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"1+0i\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value TWO, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"2+0i\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value ZERO, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+0i\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drck2ek8dkvGEZbhBtcFrGRsJi6VS-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dtYM8RDgSwWhAjsTaKptfSrjniivH\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drck2ek8dkvGEZbhBtcFrGRsJi6VS-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"c/I\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"c/-I\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"c/ONE\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"c/TWO\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"c/ZERO\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsABS9VKdxWywg5T1QBmp1Z3jQuhH-result\"}}, :nextjournal/blob-id \"5dtGtrT3xeDg4aBevTBEJJe9LtpniG\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsABS9VKdxWywg5T1QBmp1Z3jQuhH-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtGkVXRSbTkK3Wwox53rVW2tHyNvN\"} [\"h2\" {:id \"functions\"} [:<> \"Functions\"]] [\"h3\" {:id \"creation\"} [:<> \"Creation\"]] [:p [:<> \"To create complex number call \"] [:code [:<> \"complex\"]] [:<> \" or \"] [:code [:<> \"fastmath.vector/vec2\"]] [:<> \". When single argument is passed to \"] [:code [:<> \"complex\"]] [:<> \", it creates complex representing real number. No args \"] [:code [:<> \"complex\"]] [:<> \" returns complex \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" (zero).\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtGkVXRSbTkK3Wwox53rVW2tHyNvN\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"complex\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Create complex number\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"fastmath.vector/vec2\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Create complex number\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsthFxDMeHjaYQ6ivC5dGhXYVmLLY-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dtvxnFYdguvk55RcnVQM8pQEBmhQW\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsthFxDMeHjaYQ6ivC5dGhXYVmLLY-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(c/complex -1 2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(c/complex 3)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(c/complex)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(v/vec2 -1 2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value \"fastmath.vector.Vec2\", :nextjournal/viewer {:name nextjournal.clerk.viewer/read+inspect-viewer, :render-fn #viewer-fn (fn [x] (try [nextjournal.clerk.render/inspect (nextjournal.clerk.viewer/read-string-without-tag-table x)] (catch js/Error _e (nextjournal.clerk.render/render-unreadable-edn x)))), :hash \"5draK8r6Qh96paK7hAAz4TKbfdrpV4\"}}, :form {:path [4 :form], :nextjournal/value \"(class (c/complex 1 2))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dszkNSEuKWW6e3eqECMUeVBkZK4qh-result\"}}, :nextjournal/blob-id \"5dsQHFH8Gg4Edt8CrzGzqUYtyBriHu\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dszkNSEuKWW6e3eqECMUeVBkZK4qh-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dsdk3WztSJYen2mPJHQuddtRBPb2W\"} [\"h3\" {:id \"fields\"} [:<> \"Fields\"]] [:p [:<> \"There are two functions \"] [:code [:<> \"re\"]] [:<> \" and \"] [:code [:<> \"im\"]] [:<> \" to access real and imaginary part of complex number. You can also use indexes: \"] [:code [:<> \"0\"]] [:<> \" for real part and \"] [:code [:<> \"1\"]] [:<> \" for imaginary.\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dsdk3WztSJYen2mPJHQuddtRBPb2W\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"re\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Real part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"im\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Imaginary part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dqp5uKvyWoShSSoGexXsewCck3kBs-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dqxo9MYCEsiQD11PsofeiuzWDVvZG\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dqp5uKvyWoShSSoGexXsewCck3kBs-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value \"(def complex-3-4i (c/complex 3 -4))\", :nextjournal/render-opts {:loc {:line 80, :end-line 80, :column 1, :end-column 36}, :id \"complex-quaternion/complex-3-4i-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren (\"]\"), :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}, :nextjournal/render-opts {:id \"complex-quaternion/complex-3-4i-result\"}}, :nextjournal/blob-id \"5dt5dttXoZFdePry8Gx2qG55BXNF2z\"}, :nextjournal/render-opts {:id \"complex-quaternion/complex-3-4i-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [0 :form], :nextjournal/value \"(c/re complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [1 :form], :nextjournal/value \"(c/im complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [2 :form], :nextjournal/value \"(complex-3-4i 0)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [3 :form], :nextjournal/value \"(complex-3-4i 1)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsq3U3o4av89YgWQuBpMqkHLbpNdc-result\"}}, :nextjournal/blob-id \"5duHhNho5pWMprLuePvySHuzXojkxZ\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsq3U3o4av89YgWQuBpMqkHLbpNdc-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dqxzstKn7g1uEx9X8GhQdrCfPX8Bw\"} [\"h3\" {:id \"predicates\"} [:<> \"Predicates\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dqxzstKn7g1uEx9X8GhQdrCfPX8Bw\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"real?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Is z a real number? ie. imaginary part = 0.0\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"imaginary?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Is z real part zero?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"zero?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Is z is zero?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"inf?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value \"Is any part infinite?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"nan?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value \"Is any part NAN?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsJZrXk1CFQwXSFEf4ZRbmhDncSHq-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dtRPG9AjLNhyW9eyPzjZmqmT9fCdH\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsJZrXk1CFQwXSFEf4ZRbmhDncSHq-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [0 :form], :nextjournal/value \"(c/real? c/ONE)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value false, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [1 :form], :nextjournal/value \"(c/real? complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [2 :form], :nextjournal/value \"(c/imaginary? c/I)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value false, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [3 :form], :nextjournal/value \"(c/imaginary? complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [4 :form], :nextjournal/value \"(c/zero? c/ZERO)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [5 :form], :nextjournal/value \"(c/inf? (c/complex 0.0 ##Inf))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [6 :form], :nextjournal/value \"(c/nan? (c/complex ##NaN 0.0))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtqTWsFURHMNXoRj69cwg65z9MNuE-result\"}}, :nextjournal/blob-id \"5dsZqCndQKVhnfxzJqEAoC7AxdgCtJ\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtqTWsFURHMNXoRj69cwg65z9MNuE-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dstrk74t2kEEKM4srFtYfKNsgqedj\"} [\"h3\" {:id \"basic-operations\"} [:<> \"Basic operations\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dstrk74t2kEEKM4srFtYfKNsgqedj\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"abs\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Absolute value, magnitude\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"norm\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Gauss norm of the complex number, abs squared\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"arg\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Argument\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"conjugate\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value \"Complex conjugate\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"neg\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value \"Negation\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"add\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value \"Sum of two complex numbers\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"sub\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value \"Difference of two complex numbers\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"mult\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value \"Multiplication of two complex numbers\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 8], :nextjournal/value [{:path [1 8 0], :nextjournal/value \"mult-I\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 8 1], :nextjournal/value \"Multiply by i\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 9], :nextjournal/value [{:path [1 9 0], :nextjournal/value \"mult-I-\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 9 1], :nextjournal/value \"Multiply by -i\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 10], :nextjournal/value [{:path [1 10 0], :nextjournal/value \"scale\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 10 1], :nextjournal/value \"Multiply by a scalar\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 11], :nextjournal/value [{:path [1 11 0], :nextjournal/value \"div\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 11 1], :nextjournal/value \"Division of two complex numbers\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 12], :nextjournal/value [{:path [1 12 0], :nextjournal/value \"reciprocal\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 12 1], :nextjournal/value \"Reciprocal of a complex number\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 13], :nextjournal/value [{:path [1 13 0], :nextjournal/value \"flip\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 13 1], :nextjournal/value \"Exchange real and imaginary parts\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 14], :nextjournal/value [{:path [1 14 0], :nextjournal/value \"csgn\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 14 1], :nextjournal/value \"Return 0 if zero complex number or sign of real part otherwise\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 15], :nextjournal/value [{:path [1 15 0], :nextjournal/value \"delta-eq\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 15 1], :nextjournal/value \"Compare two complex numbers\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dqvNYXhvvNN9oHf4BbQNAxXBqdUsc-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5duKcYx8RP3Tpzfz1og1zA5voxJFSM\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dqvNYXhvvNN9oHf4BbQNAxXBqdUsc-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value 5.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [0 :form], :nextjournal/value \"(c/abs complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value 25.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [1 :form], :nextjournal/value \"(c/norm complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value -0.9272952180016122, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [2 :form], :nextjournal/value \"(c/arg complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(c/conjugate complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value -3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(c/neg complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 6.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value -8.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(c/add complex-3-4i complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(c/sub c/TWO complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value -7.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value -24.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(c/mult complex-3-4i complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(c/mult-I complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value [{:path [9 :val 0], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 1], :nextjournal/value -3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [9 :form], :nextjournal/value \"(c/mult-I- complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value [{:path [10 :val 0], :nextjournal/value 6.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 1], :nextjournal/value -8.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [10 :form], :nextjournal/value \"(c/scale complex-3-4i 2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value [{:path [11 :val 0], :nextjournal/value 0.24, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 1], :nextjournal/value 0.32, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [11 :form], :nextjournal/value \"(c/div c/TWO complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [12], :nextjournal/value {:val {:path [12 :val], :nextjournal/value [{:path [12 :val 0], :nextjournal/value 0.12, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 1], :nextjournal/value 0.16, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [12 :form], :nextjournal/value \"(c/reciprocal complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [13], :nextjournal/value {:val {:path [13 :val], :nextjournal/value [{:path [13 :val 0], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [13 :val 1], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [13 :form], :nextjournal/value \"(c/flip complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [14], :nextjournal/value {:val {:path [14 :val], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [14 :form], :nextjournal/value \"(c/csgn complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [15], :nextjournal/value {:val {:path [15 :val], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [15 :form], :nextjournal/value \"(c/csgn c/ZERO)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dt4qMP2wCa7Moae3ahqbinyWwoqXC-result\"}}, :nextjournal/blob-id \"5dtBa1a8U1J4oHmT3sXyLEkw8Fauva\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dt4qMP2wCa7Moae3ahqbinyWwoqXC-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5ds6QKv9iaoXw4LKbLTZNwZsdo2NAb\"} [:p [:<> \"To compare two complex numbers with some accuracy (default \"] [:code [:<> \"1.0e-6\"]] [:<> \"), call \"] [:code [:<> \"delta-eq\"]] [:<> \".\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5ds6QKv9iaoXw4LKbLTZNwZsdo2NAb\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value false, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [0 :form], :nextjournal/value \"(c/delta-eq (c/complex 1.0001 0.0) c/ONE)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [1 :form], :nextjournal/value \"(c/delta-eq (c/complex 1.0001 0.0) c/ONE 0.001)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtzR654ZUcCsWeR91xMbWFM1GwNAD-result\"}}, :nextjournal/blob-id \"5ds4mECVX6711jbhr3nhkFEHUh1hgr\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtzR654ZUcCsWeR91xMbWFM1GwNAD-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtAahaYsyXX9X3oiU93Gc3YVHVctG\"} [\"h3\" {:id \"trigonometric\"} [:<> \"Trigonometric\"]] [\"h4\" {:id \"basic\"} [:<> \"Basic\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtAahaYsyXX9X3oiU93Gc3YVHVctG\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"sin\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sin(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"cos\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\cos(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"tan\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\tan(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"sec\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sec(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"csc\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\csc(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"cot\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\cot(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"asin\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\arcsin(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"acos\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\arccos(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 8], :nextjournal/value [{:path [1 8 0], :nextjournal/value \"atan\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 8 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\arctan(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 9], :nextjournal/value [{:path [1 9 0], :nextjournal/value \"asec\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 9 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arcsec}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 10], :nextjournal/value [{:path [1 10 0], :nextjournal/value \"acsc\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 10 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccsc}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 11], :nextjournal/value [{:path [1 11 0], :nextjournal/value \"acot\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 11 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccot}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drKEFVuJ1iuMU3XcvfCdkfS1Z6xRb-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dsU3QXcLL4pEgqEKtr7VLag5mmZtA\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drKEFVuJ1iuMU3XcvfCdkfS1Z6xRb-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value 3.853738037919374, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 27.016813258003932, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(c/sin complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value -27.034945603074227, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 3.851153334811774, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(c/cos complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value -1.873462046294783E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value -0.9993559873814732, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(c/tan complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -0.036253496915868884, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value -0.0051643446077531754, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(c/sec complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 0.005174473184019394, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value -0.03627588962862601, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(c/csc complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value -1.875877379836591E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 1.0006443924715591, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(c/cot complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value 0.6339838656391769, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value -2.305509031243477, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(c/asin complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value 0.9368124611557197, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value 2.305509031243477, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(c/acos complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 1.4483069952314644, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value -0.15899719167999918, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(c/atan complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value [{:path [9 :val 0], :nextjournal/value 1.4520455954874847, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 1], :nextjournal/value -0.16044553377450554, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [9 :form], :nextjournal/value \"(c/asec complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value [{:path [10 :val 0], :nextjournal/value 0.11875073130741187, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 1], :nextjournal/value 0.16044553377450554, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [10 :form], :nextjournal/value \"(c/acsc complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value [{:path [11 :val 0], :nextjournal/value 0.12248933156343211, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 1], :nextjournal/value 0.15899719167999918, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [11 :form], :nextjournal/value \"(c/acot complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtFB2BGRoCunJZsmHvLJP6YtzSuGR-result\"}}, :nextjournal/blob-id \"5dsRguEEtSFNxzNaLJc8vp6opsHXep\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtFB2BGRoCunJZsmHvLJP6YtzSuGR-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value [{:path [0 0 0], :nextjournal/value \"sin\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 0 1], :nextjournal/value \"cos\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 0 2], :nextjournal/value \"tan\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 1], :nextjournal/value [{:path [0 1 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VvyBnEUcMC4iHpc3PDDYiUpiNWBEXgCFtttiwocpEUP1KeHMxYrykofAVvXVdGD3mubDduNvyXVp46rrtgqYf1vge.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 1 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VwuWmryCNo9RMRgM2vmngxKT9qM9EAbQNpJmLnf2EVkgHfL7ErxD7RQVCDxhfFnFP3Xp6U7uM8HUD5F8fkWQJCfF6.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 1 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VtXQofvhrZWB29txLGa411hqefPhmgvGfk476r7CwVfEy6e63jsSBrR53c2YJ9px8zdMQ3J9ieiUzF4NBmU3bkSwt.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 2], :nextjournal/value [{:path [0 2 0], :nextjournal/value \"sec\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 2 1], :nextjournal/value \"csc\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 2 2], :nextjournal/value \"cot\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 3], :nextjournal/value [{:path [0 3 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VuM2LaJkzCuqVcAwdDCzZg3Ep2ScNHERnjPsFDjRS67p7TgvV2WiUonV6zRWBvHJLduyGQeNfCrhwMxh8mdYFozTN.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 3 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxemFyhdZ3skmfAc6qKFL7cmt7cpzkMrvyvSwPwUqvPKMdorVfcYC3Z1hWYhuPJaWyVkEJxSTE5aci6BiEfy6Bdk5.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 3 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VumxvHXPq7Kubn7sg31rcCfCRm9PtaPQtLdQaqxcx7gb1C7C7o7duwry5j8iKygwFenAwjXY8gUCaJz2mPT3GPq4N.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 4], :nextjournal/value [{:path [0 4 0], :nextjournal/value \"asin\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 4 1], :nextjournal/value \"acos\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 4 2], :nextjournal/value \"atan\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 5], :nextjournal/value [{:path [0 5 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VwPgFMne5QMsvFiQNHQTAJ7xjjrZhgzFtKuPQZAh6oiBUfQX7rCgLaEraP63ZbAakaufoepbpd5pNr8uwsX9Nx9AA.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 5 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VutEzH8XYoQRFeeSQG2KfSi2NhyWTrefmhtP5U1hnaf4RXy9oHZKg1tSP9B8g6cBDtqvgmzJDQWpuAdedCQk2ZtkN.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 5 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VuBCeJpqrvRkW7hjGDnh3fVfeUaMz8rRitrCewXS8fZn1n9dQURShM731sLMTtsxqzZTSUWzyMQx8WvfgbpX1YFjK.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 6], :nextjournal/value [{:path [0 6 0], :nextjournal/value \"asec\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 6 1], :nextjournal/value \"acsc\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 6 2], :nextjournal/value \"acot\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 7], :nextjournal/value [{:path [0 7 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VtJmetC8PMPG8XcpBqoBbBGxPcXjGWPmcBr2ZwwTxBfT2gT4gF3FNPURP7fYvTzQYbodvGLbzgPo8Lhd1Zn9FCNpc.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 7 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxkTvKaM5ovV1XT4pyFUhB2UHfD4BGGGTqFJf746cGSRcZQscczjBcYAVBRQiGiTTBwio6Pm97kbwynK6u3MZooN9.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 7 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxfVfA492A1Yy8mySRbwTiYnvvCLzWHmmELDieSsYAPtpHgHwfhhKbaowhkAYiYerW4KRsLBdhP5vYChtUdt2SmpE.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 3, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsJFJmoFQz3guLQKBgWDxNYjdVoRJ-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5drxEgqH8SFB1izQzM9roYZsEFYeQK\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 3, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsJFJmoFQz3guLQKBgWDxNYjdVoRJ-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5duGmCEyCLtgZ34xRQVq3KmAusbMtz\"} [\"h4\" {:id \"hyperbolic\"} [:<> \"Hyperbolic\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5duGmCEyCLtgZ34xRQVq3KmAusbMtz\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"sinh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{sinh}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"cosh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{cosh}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"tanh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{tanh}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"sech\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{sech}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"csch\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{csch}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"coth\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{coth}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"asinh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arcsinh}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"acosh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccosh}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 8], :nextjournal/value [{:path [1 8 0], :nextjournal/value \"atanh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 8 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arctanh}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 9], :nextjournal/value [{:path [1 9 0], :nextjournal/value \"asech\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 9 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arcsec}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 10], :nextjournal/value [{:path [1 10 0], :nextjournal/value \"acsch\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 10 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccsc}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 11], :nextjournal/value [{:path [1 11 0], :nextjournal/value \"acoth\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 11 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccot}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dqrwwxpWaB9qypEFf4JjmqLt3DCtG-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dsLg3g1ABkjvSgNjouGGiDeVJ63HM\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dqrwwxpWaB9qypEFf4JjmqLt3DCtG-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value -6.548120040911006, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 7.619231720321407, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(c/sinh complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value -6.58066304055116, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 7.581552742746542, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(c/cosh complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 1.000709536067233, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value -0.004908258067496061, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(c/tanh complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -0.06529402785794708, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value -0.07522496030277319, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(c/sech complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value -0.06487747137063553, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value -0.07548983291586366, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(c/csch complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 0.9992669278059013, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 0.004901182394304474, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(c/coth complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value 2.2999140408792695, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value -0.9176168533514792, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(c/asinh complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value -2.305509031243477, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value 0.9368124611557197, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(c/acosh complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 0.11750090731143391, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value -1.4099210495965755, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(c/atanh complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value [{:path [9 :val 0], :nextjournal/value 0.16044553377450554, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 1], :nextjournal/value 1.4520455954874847, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [9 :form], :nextjournal/value \"(c/asech complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value [{:path [10 :val 0], :nextjournal/value 0.12124561370968746, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 1], :nextjournal/value 0.15950663187736358, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [10 :form], :nextjournal/value \"(c/acsch complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value [{:path [11 :val 0], :nextjournal/value 0.11750090731143391, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 1], :nextjournal/value 0.16087527719832106, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [11 :form], :nextjournal/value \"(c/acoth complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsVv8NrZtU4Nw8BXPsBFnnaR45WXS-result\"}}, :nextjournal/blob-id \"5du7tXyFasDAq7vjRnZCkBHPQMHbu3\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsVv8NrZtU4Nw8BXPsBFnnaR45WXS-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value [{:path [0 0 0], :nextjournal/value \"sinh\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 0 1], :nextjournal/value \"cosh\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 0 2], :nextjournal/value \"tanh\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 1], :nextjournal/value [{:path [0 1 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VwqTSqkBBqNsoUkwW6Zb1yw9VfLKQrPWDRbJmZEf6cQ6ztezbW4v3aUm8oiCogyjjqFiNJzbeWgxgnmUgvgcvuJSU.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 1 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VwpMpzdWoVd36RWWHzzeFRnGTGSvCNxkC9TS9aRTbcydhBKPthgYP1iC22bcYPQyEGVYNqoZ5ZkovbSJTi2if8XV9.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 1 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VtzRaxMpHESg6DqWz4zbuU4bEiZ8A56UpBUZkbkB7zQXESYXTWug1D9KS1oa39HipMWbVxoSvuo4BdFsF1SVbCh7P.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 2], :nextjournal/value [{:path [0 2 0], :nextjournal/value \"sech\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 2 1], :nextjournal/value \"csch\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 2 2], :nextjournal/value \"coth\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 3], :nextjournal/value [{:path [0 3 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxDekviGZEQNG5Amj2W1aLq4NJ2bxYkUVs1nvkqViSxL3o1v9iv24iaa44Aj84MvjFM5fGu9Pna7zfSyasoBegLTg.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 3 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VunQpWv539FHJojN9EiahAczhvaNVBm32nPBGUZD5tezkpcKQFShoV6qbUcd25fVzQDNBVEcL5yTK4zoNWbuzqXmd.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 3 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxZx9NZgLTRzMVDJKUjpok7Pj1ULVWqo6owZZgvK7pyj9ASkmBLZWn4RBYJH7s3m63eUcuBzDujJdDyPDHQTRoPsb.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 4], :nextjournal/value [{:path [0 4 0], :nextjournal/value \"asinh\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 4 1], :nextjournal/value \"acosh\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 4 2], :nextjournal/value \"atanh\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 5], :nextjournal/value [{:path [0 5 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxZq2TbnxVGGfNYWsSvPj2GmmFapoywdXcWUWfXTUnofaKUPrUrq4QkTWk8x92qVLErX2DMmLrT1ve8UUiRs1tPJ5.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 5 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxLnC38cxwG9cLk4imrUFtv99KorMEf2b6h8FAPSjGTKNNbN4P7HraZqccBtMizgs8eMdusq2kiD1rC2mo5sYiLtF.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 5 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VvKTyqrfoYHMzBBNqWbQpBwTSTgnTDkeBmiRYjUL5BbJ9wcFpuTdFoogku3UPjzUKq6MbJKaTtm5RtS3sMMdHJo5h.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 6], :nextjournal/value [{:path [0 6 0], :nextjournal/value \"asech\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 6 1], :nextjournal/value \"acsch\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 6 2], :nextjournal/value \"acoth\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 7], :nextjournal/value [{:path [0 7 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8Vwdp8fgEXC7dGU7P5z1PdPENi9hC4sD2JCHmhAuwSiSoYpoGQcJTeBWNXiuwqDpVJk4mSdpB4PhGSai4yZZxkGWm1.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 7 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VxbyeL9jQfdeAL93tjp7gLvqLfQkmgCrVVbsB5mjoanddpbrS5rSecugDxDuUFEaLTkFr9wAKZTW77phphVLr419E.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 7 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8Vvwn9W2AsF9CNWbRxM6kBt9rZdq6QhuPxn46eowvEAYr6BWZdBGRg9seVtLyvx6i6dzm9BPg96GSRPEekb4WJVJF2.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 3, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsVhMYDrzJTyMAet5S5Rggr6UcTy6-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dr7USoNgmmdj8tYoVLJ2VZ3wJyVfn\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 3, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsVhMYDrzJTyMAet5S5Rggr6UcTy6-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtxos72Wi9XW8wKbiGA9m277uDLw9\"} [\"h3\" {:id \"power-and-logarithm\"} [:<> \"Power and logarithm\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtxos72Wi9XW8wKbiGA9m277uDLw9\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"sq\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z^2\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"sqrt\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sqrt{z}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"sqrt1z\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sqrt{1-z^2}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"pow\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z^c\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"exp\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"e^z\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"log\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{Log}(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \", principal value\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"logb\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\log_b(z)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5ds9uKrBQdEjCYrdBRNiCFDogsZn2s-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5ds6qjcfdrCPR7LhrWFUH4GZibTf4c\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5ds9uKrBQdEjCYrdBRNiCFDogsZn2s-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value -7.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value -24.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(c/sq complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 2.0000000000000004, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value -1.0000000000000002, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(c/sqrt complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 4.0803321728351385, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 2.9409370344625736, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(c/sqrt1z complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -2.997990598421401, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value -0.6237845862790471, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(c/pow complex-3-4i complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value -13.128783081462165, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value 15.200784463067949, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(c/exp complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 1.6094379124341003, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value -0.9272952180016122, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(c/log complex-3-4i)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value -0.590334470601733, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value -1.0245999974535522, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(c/logb complex-3-4i c/I)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dssNvwCfrjV37RNpjuAbzajYBATRF-result\"}}, :nextjournal/blob-id \"5dse4dyTZnPCmDjSMYy6DtBc8y9Cvm\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dssNvwCfrjV37RNpjuAbzajYBATRF-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value [{:path [0 0 0], :nextjournal/value \"sq\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 0 1], :nextjournal/value \"sqrt\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 0 2], :nextjournal/value \"sqrt1z\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 1], :nextjournal/value [{:path [0 1 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VuBBq4swhopBJhLLWBi58Asaxto1b3zLTnaummBRrZW3arwhE6WuD5bybUYoKWMiCoENiABxhnihanM6n39Z6JeNv.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 1 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VwSA671XxZhSC3n9uv6pHa8E137ZDrkgLVkx6KiVMDE99o9FwnWc8mS9UEEUcN1ACioJEZGnZsS76arm2Go3havTk.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 1 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VtjGRDvEV8ct9Breg3kkEvzp8Ew6zqqnPSCYzdYmUtoDuisvttkmHtGPcuahdHs1DC1A3fW82i3CJf6TR2Jaipw6L.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 2], :nextjournal/value [{:path [0 2 0], :nextjournal/value \"exp\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 2 1], :nextjournal/value \"log\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 2 2], :nextjournal/value \"z^(complex-3-4i)\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [0 3], :nextjournal/value [{:path [0 3 0], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VtnL9F2K7WFoaFneJJMkg8wobuJjN19DuafyHfKyPryBmem4DouXMkFQkDjQG7kyxPrgfEafrFqipYpoQAQVjfC5G.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 3 1], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VupjYDFAK9zoKjxXvzNY6f9DhgkjLqc4opE8YFxNCdNJrTffEbLkxdwRbQKtbFFeE2fX19uMWgBhmJxcAqJYSBYkQ.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}} {:path [0 3 2], :nextjournal/content-type \"image/png\", :nextjournal/value \"./../../_data/8VuC4eBz3pdRcLxfiF5BzPuA3Aew1wQzNQ9u8fSG9TZrvfL1kfJMSH7P2LaSAK9RSeaduDPzHHhmsDaEzwXeEuhcCs.png\", :nextjournal/width :wide, :nextjournal/viewer {:name nextjournal.clerk.viewer/image-viewer, :render-fn #viewer-fn (fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose [:img {:src (nextjournal.clerk.render/url-for blob-or-url)}]]), :hash \"5dt7o6hJourKKwffBgPcV6ScgK5Xk7\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 3, :number-col? #{}, :id \"complex-quaternion/anon-expr-5draAWoAdBDnu8RkjA6GvQF8ki7MRL-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dsCmvq6oNQB4AitQR1DA2khsCpcch\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 3, :number-col? #{}, :id \"complex-quaternion/anon-expr-5draAWoAdBDnu8RkjA6GvQF8ki7MRL-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dsWmrp9c8NXEfGJVB2nR1AW9AosFG\"} [\"h2\" {:id \"list-of-symbols\"} [:<> \"List of symbols\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dsWmrp9c8NXEfGJVB2nR1AW9AosFG\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [:div [:div [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} \"fastmath.complex\"] \" namespace\"] [:p] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [0], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Complex numbers functions.\"]] [:p [:<> \"Complex number is represented as \"] [:code [:<> \"Vec2\"]] [:<> \" type (from \"] [:a {:href \"#LOS-clojure2d.math.vector\"} [:<> \"clojure2d.math.vector\"]] [:<> \" namespace).\"]] [:p [:<> \"To create complex number use \"] [:a {:href \"#LOS-complex\"} [:<> \"complex\"]] [:<> \", \"] [:a {:href \"#LOS-vec2\"} [:<> \"vec2\"]] [:<> \" or \"] [:a {:href \"#LOS--%3EVec2\"} [:<> \"->Vec2\"]] [:<> \".\"]] [:p [:<> \"Implementation checks for ##Inf, ##NaN and some of the function distinguish +0.0 and -0.0\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div ([:div {:class \"pb-8\", :id \"LOS--I\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [1], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} -I] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L24\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [2], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-I\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [3], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} I] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L22\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [4], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-I-\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [5], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} I-] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L23\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [6], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-ONE\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [7], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} ONE] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L25\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [8], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-TWO\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [9], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} TWO] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L26\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [10], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-ZERO\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [11], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} ZERO] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L27\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [12], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-abs\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [13], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} abs] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L65\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [14], :nextjournal/value \"(abs z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [15], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Absolute value, magnitude\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acos\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [16], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acos] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L527\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [17], :nextjournal/value \"(acos z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [18], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"acos\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acosh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [19], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acosh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L675\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [20], :nextjournal/value \"(acosh z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [21], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"acosh\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acot\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [22], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acot] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L627\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [23], :nextjournal/value \"(acot z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [24], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"acot\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acoth\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [25], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acoth] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L794\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [26], :nextjournal/value \"(acoth z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [27], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acsc\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [28], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acsc] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L600\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [29], :nextjournal/value \"(acsc z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [30], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"acsc\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acsch\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [31], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acsch] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L761\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [32], :nextjournal/value \"(acsch z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [33], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-add\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [34], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} add] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L84\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [35], :nextjournal/value \"(add z1 z2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [36], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Sum of two complex numbers\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-arg\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [37], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} arg] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L79\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [38], :nextjournal/value \"(arg z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [39], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Argument (angle) of the complex number\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asec\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [40], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asec] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L574\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [41], :nextjournal/value \"(asec z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [42], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"asec\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asech\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [43], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asech] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L727\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [44], :nextjournal/value \"(asech z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [45], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asin\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [46], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asin] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L506\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [47], :nextjournal/value \"(asin z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [48], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"asin\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asinh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [49], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asinh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L652\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [50], :nextjournal/value \"(asinh z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [51], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"asinh\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-atan\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [52], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} atan] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L547\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [53], :nextjournal/value \"(atan z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [54], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"atan\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-atanh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [55], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} atanh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L701\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [56], :nextjournal/value \"(atanh z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [57], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"atanh\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-complex\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [58], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} complex] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L29\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [59], :nextjournal/value \"(complex a b)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [60], :nextjournal/value \"(complex a)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [61], :nextjournal/value \"(complex)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [62], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Create complex number. Represented as \"] [:code [:<> \"Vec2\"]] [:<> \".\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-conjugate\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [63], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} conjugate] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L123\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [64], :nextjournal/value \"(conjugate z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [65], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Complex conjugate. \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\bar{z}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-cos\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [66], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} cos] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L356\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [67], :nextjournal/value \"(cos z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [68], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"cos\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-cosh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [69], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} cosh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L437\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [70], :nextjournal/value \"(cosh z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [71], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"cosh\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-cot\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [72], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} cot] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L410\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [73], :nextjournal/value \"(cot z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [74], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"csc\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-coth\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [75], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} coth] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L490\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [76], :nextjournal/value \"(coth z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [77], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"coth\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-csc\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [78], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} csc] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L396\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [79], :nextjournal/value \"(csc z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [80], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"csc\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-csch\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [81], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} csch] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L476\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [82], :nextjournal/value \"(csch z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [83], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"csch\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-csgn\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [84], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} csgn] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L53\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [85], :nextjournal/value \"(csgn re im)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [86], :nextjournal/value \"(csgn z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [87], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Complex sgn.\"]] [:p [:<> \"Returns \"] [:code [:<> \"0\"]] [:<> \" for \"] [:code [:<> \"0+0i\"]] [:<> \" or calls \"] [:code [:<> \"m/sgn\"]] [:<> \" on real part otherwise.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-delta-eq\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [88], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} delta-eq] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L46\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [89], :nextjournal/value \"(delta-eq q1 q2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [90], :nextjournal/value \"(delta-eq q1 q2 accuracy)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [91], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Compare complex numbers with given accuracy (10e-6 by default)\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-div\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [92], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} div] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L128\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [93], :nextjournal/value \"(div z1 z2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [94], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Divide two complex numbers.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-exp\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [95], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} exp] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L180\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [96], :nextjournal/value \"(exp z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [97], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"exp\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-flip\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [98], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} flip] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L63\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [99], :nextjournal/value \"(flip z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [100], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Exchange imaginary and real parts\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-im\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [101], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} im] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L36\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [102], :nextjournal/value \"(im z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [103], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Imaginary part\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-imaginary?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [104], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} imaginary?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L39\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [105], :nextjournal/value \"(imaginary? z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [106], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is z is a pure imaginary number?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-inf?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [107], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} inf?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L41\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [108], :nextjournal/value \"(inf? z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [109], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is infinite?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-log\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [110], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} log] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L194\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [111], :nextjournal/value \"(log z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [112], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"log, principal value\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-logb\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [113], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} logb] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L210\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [114], :nextjournal/value \"(logb z b)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [115], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"log with base b\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-mult\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [116], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} mult] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L102\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [117], :nextjournal/value \"(mult z1 z2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [118], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Multiply two complex numbers.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-mult-I\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [119], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} mult-I] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L112\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [120], :nextjournal/value \"(mult-I z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [121], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-mult-I-\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [122], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} mult-I-] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L113\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [123], :nextjournal/value \"(mult-I- z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [124], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-nan?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [125], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} nan?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L43\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [126], :nextjournal/value \"(nan? z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [127], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is NaN?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-neg\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [128], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} neg] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L153\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [129], :nextjournal/value \"(neg z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [130], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Negate complex number. \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"-z\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-norm\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [131], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} norm] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L72\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [132], :nextjournal/value \"(norm z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [133], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Norm (Guass) of the complex number, absolute value squared\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-pow\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [134], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} pow] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L315\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [135], :nextjournal/value \"(pow z1 z2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [136], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Power. \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z_1^{z_2}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-re\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [137], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} re] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L35\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [138], :nextjournal/value \"(re z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [139], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Real part\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-real?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [140], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} real?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L38\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [141], :nextjournal/value \"(real? z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [142], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is z is a real number?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-reciprocal\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [143], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} reciprocal] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L139\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [144], :nextjournal/value \"(reciprocal z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [145], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\frac{1}{z}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-scale\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [146], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} scale] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L96\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [147], :nextjournal/value \"(scale z v)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [148], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Multiply by real number\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sec\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [149], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sec] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L382\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [150], :nextjournal/value \"(sec z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [151], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"sec\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sech\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [152], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sech] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L462\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [153], :nextjournal/value \"(sech z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [154], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"sech\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sin\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [155], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sin] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L345\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [156], :nextjournal/value \"(sin z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [157], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"sin\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sinh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [158], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sinh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L426\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [159], :nextjournal/value \"(sinh z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [160], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"sinh\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sq\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [161], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sq] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L115\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [162], :nextjournal/value \"(sq z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [163], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Square complex number. \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z^2\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sqrt\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [164], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sqrt] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L158\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [165], :nextjournal/value \"(sqrt z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [166], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Sqrt of complex number. \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sqrt{z}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sqrt1z\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [167], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sqrt1z] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L170\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [168], :nextjournal/value \"(sqrt1z z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [169], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sqrt{1-z^2}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sub\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [170], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sub] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L90\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [171], :nextjournal/value \"(sub z1 z2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [172], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Difference of two complex numbers\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-tan\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [173], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} tan] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L368\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [174], :nextjournal/value \"(tan z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [175], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"tan\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-tanh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [176], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} tanh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L448\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [177], :nextjournal/value \"(tanh z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [178], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"tanh\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-zero?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [179], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} zero?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/complex.clj#L40\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [180], :nextjournal/value \"(zero? z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [181], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is zero?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]])]], :nextjournal/visibility {:code :hide, :result :show}, :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtDKKz7r37K72J3R2XLHjTLXPrsCX-result\"}}, :nextjournal/blob-id \"8Vus1orSnDBmAi8cHdpu14RVPGRTCfBDa48s63iSPpy1VbXSobQJCedwwGumiofSVNqdiYBXhBAvMeZ9RiPLdgjSNd\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtDKKz7r37K72J3R2XLHjTLXPrsCX-result\"}, :nextjournal/visibility {:code :hide, :result :show}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dsNLxirBa79VV7dsYhjHYwmXtV6zp\"} [\"h1\" {:id \"quaternions\"} [:<> \"Quaternions\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dsNLxirBa79VV7dsYhjHYwmXtV6zp\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value \"(require '[fastmath.quaternion :as q])\", :nextjournal/render-opts {:loc {:line 278, :end-line 278, :column 1, :end-column 39}, :id \"complex-quaternion/anon-expr-5dt9YZZ8MuNeRChNStojZmUVpvi5QP-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value nil, :nextjournal/viewer {:name nextjournal.clerk.viewer/nil-viewer, :render-fn #viewer-fn (fn [_] [:span.cmt-default.inspected-value \"nil\"]), :hash \"5ds3x8WPypHpZ82nScxBB4onExS7LG\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dt9YZZ8MuNeRChNStojZmUVpvi5QP-result\"}}, :nextjournal/blob-id \"8VxMLktXDdtVMc8iXimmtZ8NSKSLuY18iS4X8ByUYe38wJcyDLyPHV17oQkSvYDuZuMZzBdwAVhWgxupuvjsQC4uMd\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dt9YZZ8MuNeRChNStojZmUVpvi5QP-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5drUBYUhMySzgZhb8678HENfHSjLzS\"} [:p [:<> \"Quaternions \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z = a + bi + cj + dk\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" are represented internally as \"] [:code [:<> \"fastmath.vector.Vec4\"]] [:<> \" type and can be created with \"] [:code [:<> \"quaternion\"]] [:<> \" function.\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5drUBYUhMySzgZhb8678HENfHSjLzS\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value \"(q/quaternion 1 2 3 4)\", :nextjournal/render-opts {:loc {:line 282, :end-line 282, :column 1, :end-column 23}, :id \"complex-quaternion/anon-expr-5duM5TX14iaaNFbydftMxqBHchTjEw-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren (\"]\"), :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5duM5TX14iaaNFbydftMxqBHchTjEw-result\"}}, :nextjournal/blob-id \"5dtBLPrKcJWdbZrJmb1sBr9HSgjwBf\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5duM5TX14iaaNFbydftMxqBHchTjEw-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5drXj8qbrt2Cr2xe2RNkia86bnYTBu\"} [\"h2\" {:id \"constants-2\"} [:<> \"Constants\"]] [:p [:<> \"Basic predefined values\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5drXj8qbrt2Cr2xe2RNkia86bnYTBu\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"value\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value I, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+1i+0j+0k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value J, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+0i+1j+0k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value K, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+0i+0j+1k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value -I, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0-1i+0j+0k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value -J, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+0i-1j+0k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value -K, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+0i+0j-1k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value ONE, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 6 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"1+0i+0j+0k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value ZERO, :nextjournal/viewer {:name nextjournal.clerk.viewer/symbol-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-keyword.inspected-value (str x)]), :hash \"5ds6mRBmQQKPtLsbj2dtQC9qdG4rkZ\"}} {:path [1 7 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"0+0i+0j+0k\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drbTCYgBuoHKQQ8cBuCBDdsJ34Qsp-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5drrwiJKV11zefZHzE39avZaeXGUSL\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drbTCYgBuoHKQQ8cBuCBDdsJ34Qsp-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"q/I\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 2], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"q/J\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 3], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"q/K\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"q/-I\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 2], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"q/-J\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 3], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"q/-K\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"q/ONE\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"q/ZERO\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dqsmnfd1JY1WEXcuzDvsARtYjtqAu-result\"}}, :nextjournal/blob-id \"5dsQQS3GkG7QUSmAZG2byJSn4hYayi\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dqsmnfd1JY1WEXcuzDvsARtYjtqAu-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5duHa2r3qdum7EwisCt47uyYbszE4m\"} [\"h2\" {:id \"functions-2\"} [:<> \"Functions\"]] [\"h3\" {:id \"creation-2\"} [:<> \"Creation\"]] [:p [:<> \"To create quaternion call \"] [:code [:<> \"quaternion\"]] [:<> \" or \"] [:code [:<> \"fastmath.vector/vec4\"]] [:<> \". Arguments for \"] [:code [:<> \"quaternion\"]] [:<> \":\"]] [:ul [:li [:<> [:<> \"4 arguments - all four parts\"]]] [:li [:<> [:<> \"2 arguments - scalar and vector parts\"]]] [:li [:<> [:<> \"1 argument - only scalar part, returns quaternion representation of real number\"]]]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5duHa2r3qdum7EwisCt47uyYbszE4m\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"quaternion\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Create quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"fastmath.vector/vec4\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Create quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"complex->quaternion\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Convert complex number into quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drSrQTrALnp47wucwyrLdWE5dMVkY-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dsLCYC9Qnwp5RqhqKFzGsT5BuFKHP\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drSrQTrALnp47wucwyrLdWE5dMVkY-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 2], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 3], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(q/quaternion 1 2 3 4)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 2], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 3], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(q/quaternion 1 [2 3 4])\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(q/quaternion 1)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 3], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(fastmath.vector/vec4 1 2 3 4)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value \"fastmath.vector.Vec4\", :nextjournal/viewer {:name nextjournal.clerk.viewer/read+inspect-viewer, :render-fn #viewer-fn (fn [x] (try [nextjournal.clerk.render/inspect (nextjournal.clerk.viewer/read-string-without-tag-table x)] (catch js/Error _e (nextjournal.clerk.render/render-unreadable-edn x)))), :hash \"5draK8r6Qh96paK7hAAz4TKbfdrpV4\"}}, :form {:path [4 :form], :nextjournal/value \"(class (q/quaternion 1 2 3 4))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(q/complex->quaternion (c/complex 1 2))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drtbjH9m8HpkopLT3Efhd8pqyvV85-result\"}}, :nextjournal/blob-id \"5dr7Wi3AhYomYXzGDZDPYdgrTRWbGM\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drtbjH9m8HpkopLT3Efhd8pqyvV85-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtcXivdbHtch3EE31CwLtna2zQN1B\"} [\"h3\" {:id \"fields-2\"} [:<> \"Fields\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtcXivdbHtch3EE31CwLtna2zQN1B\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"scalar\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Scalar / real part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"re\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Scalar / real part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"vector\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Vector part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"im-i\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value \"i imaginary part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"im-j\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value \"j imaginary part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"im-k\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value \"k imaginary part\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drfHbKnnNVezwiG5TE1hnzF4G1iF8-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dsoN58rVQXLbnQ5gDq2pUr7RHtu8J\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5drfHbKnnNVezwiG5TE1hnzF4G1iF8-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value \"(def quaternion-3-4i+2j-1k (q/quaternion 3 -4 2 -1))\", :nextjournal/render-opts {:loc {:line 340, :end-line 340, :column 1, :end-column 53}, :id \"complex-quaternion/quaternion-3-4i+2j-1k-code\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-block-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code-block, :hash \"5dru1FUcVRTRrVKJFbNw4FG2wXmiwB\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren (\"]\"), :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}, :nextjournal/render-opts {:id \"complex-quaternion/quaternion-3-4i+2j-1k-result\"}}, :nextjournal/blob-id \"5dsg2HnRMoaLLT1RpuoAva8nJvNMCB\"}, :nextjournal/render-opts {:id \"complex-quaternion/quaternion-3-4i+2j-1k-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [0 :form], :nextjournal/value \"(q/scalar quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [1 :form], :nextjournal/value \"(q/re quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(q/vector quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [3 :form], :nextjournal/value \"(q/im-i quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [4 :form], :nextjournal/value \"(q/im-j quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [5 :form], :nextjournal/value \"(q/im-k quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [6 :form], :nextjournal/value \"(quaternion-3-4i+2j-1k 0)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value -4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [7 :form], :nextjournal/value \"(quaternion-3-4i+2j-1k 1)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value 2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [8 :form], :nextjournal/value \"(quaternion-3-4i+2j-1k 2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value -1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [9 :form], :nextjournal/value \"(quaternion-3-4i+2j-1k 3)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dswML2TLEmGRieQFLud2s6YfoHwFg-result\"}}, :nextjournal/blob-id \"5dsDqXrB6tXUkzsJFvSzrUrh556w24\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dswML2TLEmGRieQFLud2s6YfoHwFg-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtTZNmpmt68X8tscJU1ccN5v1pv6y\"} [\"h3\" {:id \"predicates-2\"} [:<> \"Predicates\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtTZNmpmt68X8tscJU1ccN5v1pv6y\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"real?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Is q a real number? ie. imaginary part = 0.0\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"imaginary?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Is q real part zero?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"zero?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Is q is zero?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"inf?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value \"Is any part infinite?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"nan?\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value \"Is any part NAN?\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsKkvygvwcjy25Et8dfaVt8QqQRAU-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dto3zxCWvgjMXC66TsaQA63uE6Qoh\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsKkvygvwcjy25Et8dfaVt8QqQRAU-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [0 :form], :nextjournal/value \"(q/real? q/ONE)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value false, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [1 :form], :nextjournal/value \"(q/real? quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [2 :form], :nextjournal/value \"(q/imaginary? q/K)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value false, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [3 :form], :nextjournal/value \"(q/imaginary? quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [4 :form], :nextjournal/value \"(q/zero? q/ZERO)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [5 :form], :nextjournal/value \"(q/inf? (q/quaternion 0.0 0.0 0.0 ##Inf))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [6 :form], :nextjournal/value \"(q/nan? (q/quaternion ##NaN 0.0 0.0 0.0))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsnTXnnwX62o4eYWzsT8zxBMZxnAz-result\"}}, :nextjournal/blob-id \"5duKFZd8vSfNMRcpqqSywP5NWwjhRn\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dsnTXnnwX62o4eYWzsT8zxBMZxnAz-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dtREGs7bXR6DVTCAUKUCbdBpr75wt\"} [\"h3\" {:id \"basic-operations-2\"} [:<> \"Basic operations\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dtREGs7bXR6DVTCAUKUCbdBpr75wt\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"norm\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Norm of the quaternion, length of the vector\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"arg\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value \"Argument of the quaternion, atan2(|vector(q)|,scalar(q))\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"normalize\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Normalize quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"conjugate\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value \"Conjugate\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"neg\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value \"Negation\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"add\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value \"Sum of two quaternions\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"sub\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value \"Difference of two quaternions\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"mult\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value \"Multiplication of two quaternions\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 8], :nextjournal/value [{:path [1 8 0], :nextjournal/value \"scale\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 8 1], :nextjournal/value \"Multiply by a scalar\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 9], :nextjournal/value [{:path [1 9 0], :nextjournal/value \"div\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 9 1], :nextjournal/value \"Division of two quaternions\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 10], :nextjournal/value [{:path [1 10 0], :nextjournal/value \"reciprocal\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 10 1], :nextjournal/value \"Reciprocal of the quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 11], :nextjournal/value [{:path [1 11 0], :nextjournal/value \"qsgn\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 11 1], :nextjournal/value \"Return 0 for zero quaternion or sign of real part otherwise\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 12], :nextjournal/value [{:path [1 12 0], :nextjournal/value \"delta-eq\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 12 1], :nextjournal/value \"Compare two quaternions\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 13], :nextjournal/value [{:path [1 13 0], :nextjournal/value \"slerp\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 13 1], :nextjournal/value \"Interpolate quaternions, spherical linear interpolation\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsYPT6i2EpQVMogNno5C5LQSXAPJy-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5ds48LJoX1pw73fsjpZhSErwfRrD7A\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsYPT6i2EpQVMogNno5C5LQSXAPJy-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value 5.477225575051661, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [0 :form], :nextjournal/value \"(q/norm quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value 0.9911565864311923, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [1 :form], :nextjournal/value \"(q/arg quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value -2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 3], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(q/conjugate quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -3.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value -2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 3], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(q/neg quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 6.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value -8.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 2], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 3], :nextjournal/value -2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(q/add quaternion-3-4i+2j-1k quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value -2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 4.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value -2.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 3], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(q/sub q/ONE quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value -12.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value -24.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 2], :nextjournal/value 12.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 3], :nextjournal/value -6.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(q/mult quaternion-3-4i+2j-1k quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value -0.1, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value 0.3666666666666667, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 2], :nextjournal/value 0.5666666666666667, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 3], :nextjournal/value -0.03333333333333327, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(q/div (q/quaternion 0 1 2 3) quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 0.1, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value 0.13333333333333333, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 2], :nextjournal/value -0.06666666666666667, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 3], :nextjournal/value 0.03333333333333333, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(q/reciprocal quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value 1.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [9 :form], :nextjournal/value \"(q/qsgn quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}, :form {:path [10 :form], :nextjournal/value \"(q/qsgn q/ZERO)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value [{:path [11 :val 0], :nextjournal/value 2.99587362120875, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 1], :nextjournal/value -3.994498161611667, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 2], :nextjournal/value 1.9972490808058334, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 3], :nextjournal/value -0.9888676332001555, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [11 :form], :nextjournal/value \"(q/slerp quaternion-3-4i+2j-1k q/K 0.001)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [12], :nextjournal/value {:val {:path [12 :val], :nextjournal/value [{:path [12 :val 0], :nextjournal/value 1.0025401374325065, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 1], :nextjournal/value -1.336720183243342, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 2], :nextjournal/value 0.6683600916216708, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 3], :nextjournal/value 1.4961994477762082, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [12 :form], :nextjournal/value \"(q/slerp quaternion-3-4i+2j-1k q/K 0.5)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [13], :nextjournal/value {:val {:path [13 :val], :nextjournal/value [{:path [13 :val 0], :nextjournal/value 9.790148868681625E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [13 :val 1], :nextjournal/value -0.0013053531824909204, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [13 :val 2], :nextjournal/value 6.526765912452936E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [13 :val 3], :nextjournal/value 1.0017005039495759, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [13 :form], :nextjournal/value \"(q/slerp quaternion-3-4i+2j-1k q/K 0.999)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtr44JpFktTCfcwED4ZjNfrJZkT5C-result\"}}, :nextjournal/blob-id \"5dt5EsJNyeqorVdQau1uNp4svzN2Sh\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtr44JpFktTCfcwED4ZjNfrJZkT5C-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5ds6QKv9iaoXw4LKbLTZNwZsdo2NAb#2\"} [:p [:<> \"To compare two complex numbers with some accuracy (default \"] [:code [:<> \"1.0e-6\"]] [:<> \"), call \"] [:code [:<> \"delta-eq\"]] [:<> \".\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5ds6QKv9iaoXw4LKbLTZNwZsdo2NAb#2\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value false, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [0 :form], :nextjournal/value \"(q/delta-eq (q/quaternion 1.0001 0.0 0.0 1.0E-4) q/ONE)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value true, :nextjournal/viewer {:name nextjournal.clerk.viewer/boolean-viewer, :render-fn #viewer-fn (fn [x] [:span.cmt-bool.inspected-value (str x)]), :hash \"5drtojy56K7q7gy8rvTRBwpzg8DdcJ\"}}, :form {:path [1 :form], :nextjournal/value \"(q/delta-eq (q/quaternion 1.0001 0.0 0.0 1.0E-4) q/ONE 0.001)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dt3PZsJiB2pY4qfY5MQNM8RtbyXfd-result\"}}, :nextjournal/blob-id \"5dtvRe8viXQd7TP9dS6EBXE9B4XvHz\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dt3PZsJiB2pY4qfY5MQNM8RtbyXfd-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5drvZqNBKGRpHzR33xbiPin8scb3h8\"} [\"h3\" {:id \"trigonometric-2\"} [:<> \"Trigonometric\"]] [:p [:<> \"All trigonometric and hyperbolic (with their inversions) functions are derived from the complex operation where given function \"] [:code [:<> \"f\"]] [:<> \" is applied  for \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z_{in} = r + |\\\\vec{v}|i\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" complex number, where \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"r\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" is scalar and \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\vec{v}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" is vector of the quaternion, and \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"|\\\\vec{v}|\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \" is length of the vector \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\vec{v}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \". So, \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"z_{res} = f(z_{in})\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \". Then resulting quaternion has a form of \"] [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"q = \\\\Re(z_{res}) + \\\\frac{\\\\Im(z_{res})}{|\\\\vec{v}|}\\\\vec{v}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \".\"]] [:p [:<> \"There results are the same as described in \"] [:a {:href \"https://math.stackexchange.com/questions/1499095/how-to-calculate-sin-cos-tan-of-a-quaternion\"} [:<> \"SO\"]]] [\"h4\" {:id \"basic-2\"} [:<> \"Basic\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5drvZqNBKGRpHzR33xbiPin8scb3h8\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"sin\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sin(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"cos\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\cos(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"tan\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\tan(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"sec\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sec(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"csc\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\csc(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"cot\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\cot(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"asin\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\arcsin(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"acos\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\arccos(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 8], :nextjournal/value [{:path [1 8 0], :nextjournal/value \"atan\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 8 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\arctan(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 9], :nextjournal/value [{:path [1 9 0], :nextjournal/value \"asec\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 9 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arcsec}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 10], :nextjournal/value [{:path [1 10 0], :nextjournal/value \"acsc\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 10 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccsc}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 11], :nextjournal/value [{:path [1 11 0], :nextjournal/value \"acot\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 11 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccot}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dtaRVT78XDD2PHXjTSZUAp11kanhy-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dqtN8SCYNFaDtHuprpVXKPauPkz6T\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dtaRVT78XDD2PHXjTSZUAp11kanhy-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value 6.899082983776562, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 42.237105567401656, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 2], :nextjournal/value -21.118552783700828, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 3], :nextjournal/value 10.559276391850414, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(q/sin quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value -48.39880950449715, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 6.020753388096433, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 2], :nextjournal/value -3.0103766940482166, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 3], :nextjournal/value 1.5051883470241083, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(q/cos quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value -5.845458235964038E-5, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value -0.8726962076226646, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value 0.4363481038113323, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 3], :nextjournal/value -0.21817405190566616, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(q/tan quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -0.020250359872844396, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value -0.002519120285453945, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value 0.0012595601427269724, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 3], :nextjournal/value -6.297800713634862E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(q/sec quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 0.0028877789355416907, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value -0.017679367539514063, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 2], :nextjournal/value 0.008839683769757032, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 3], :nextjournal/value -0.004419841884878516, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(q/csc quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value -5.8478075409454815E-5, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 0.8730469465151676, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value -0.4365234732575838, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 3], :nextjournal/value 0.2182617366287919, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(q/cot quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value 0.5720790853473618, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value -2.092402509581348, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 2], :nextjournal/value 1.046201254790674, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 3], :nextjournal/value -0.523100627395337, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(q/asin quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value 0.9987172414475347, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value 2.092402509581348, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 2], :nextjournal/value -1.046201254790674, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 3], :nextjournal/value 0.523100627395337, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(q/acos quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 1.4687873369986222, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value -0.13300216424918662, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 2], :nextjournal/value 0.06650108212459331, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 3], :nextjournal/value -0.033250541062296655, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(q/atan quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value [{:path [9 :val 0], :nextjournal/value 1.4717924267171476, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 1], :nextjournal/value -0.13346875583025314, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 2], :nextjournal/value 0.06673437791512657, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 3], :nextjournal/value -0.033367188957563285, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [9 :form], :nextjournal/value \"(q/asec quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value [{:path [10 :val 0], :nextjournal/value 0.09900390007774885, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 1], :nextjournal/value 0.13346875583025314, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 2], :nextjournal/value -0.06673437791512657, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 3], :nextjournal/value 0.033367188957563285, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [10 :form], :nextjournal/value \"(q/acsc quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value [{:path [11 :val 0], :nextjournal/value 0.10200898979627437, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 1], :nextjournal/value 0.13300216424918662, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 2], :nextjournal/value -0.06650108212459331, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 3], :nextjournal/value 0.033250541062296655, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [11 :form], :nextjournal/value \"(q/acot quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drPskDy91pzuW959GeoiGRzKkNoWE-result\"}}, :nextjournal/blob-id \"5du2CdX6u6uwr642Lcqgrqy8vALCdf\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drPskDy91pzuW959GeoiGRzKkNoWE-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5drPo9FnZYimBuunYQsEShU4EwZ2JL\"} [\"h4\" {:id \"hyperbolic-2\"} [:<> \"Hyperbolic\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5drPo9FnZYimBuunYQsEShU4EwZ2JL\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"sinh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{sinh}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"cosh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{cosh}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"tanh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{tanh}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"sech\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{sech}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"csch\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{csch}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"coth\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{coth}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"asinh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arcsinh}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"acosh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccosh}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 8], :nextjournal/value [{:path [1 8 0], :nextjournal/value \"atanh\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 8 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arctanh}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 9], :nextjournal/value [{:path [1 9 0], :nextjournal/value \"asech\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 9 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arcsec}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 10], :nextjournal/value [{:path [1 10 0], :nextjournal/value \"acsch\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 10 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccsc}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 11], :nextjournal/value [{:path [1 11 0], :nextjournal/value \"acoth\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 11 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{arccot}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5ds3oecwSKTJHcMc4mcxcDkcJbis6n-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5duL2XiuH6kuKmzQca7ebjCkafdMRj\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5ds3oecwSKTJHcMc4mcxcDkcJbis6n-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value -1.296803904575085, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 8.71383620731414, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 2], :nextjournal/value -4.35691810365707, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 3], :nextjournal/value 2.178459051828535, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(q/sinh quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value -1.3032487908533252, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 8.670744140935486, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 2], :nextjournal/value -4.335372070467743, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 3], :nextjournal/value 2.1676860352338716, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(q/cosh quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 1.0048020485214226, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value -0.0011162352938680958, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value 5.581176469340479E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 3], :nextjournal/value -2.7905882346702395E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(q/tanh quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -0.012983853625162018, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value -0.08638386894141986, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value 0.04319193447070993, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 3], :nextjournal/value -0.021595967235354965, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(q/sech quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value -0.012796431096708707, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value -0.08598524743911636, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 2], :nextjournal/value 0.04299262371955818, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 3], :nextjournal/value -0.02149631185977909, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(q/csch quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 0.9952192889310066, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 0.0011055897995807232, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value -5.527948997903616E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 3], :nextjournal/value 2.763974498951808E-4, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(q/coth quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value 2.3904851946368324, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value -0.858419656087626, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 2], :nextjournal/value 0.429209828043813, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 3], :nextjournal/value -0.2146049140219065, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(q/asinh quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value 2.397148221118022, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value -0.871751877483965, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 2], :nextjournal/value 0.4358759387419825, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 3], :nextjournal/value -0.21793796937099125, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(q/acosh quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 0.09801052194400592, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value -1.2375076588787786, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 2], :nextjournal/value 0.6187538294393893, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 3], :nextjournal/value -0.30937691471969464, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(q/atanh quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value [{:path [9 :val 0], :nextjournal/value -0.1529076691259284, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 1], :nextjournal/value -1.2846857528941096, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 2], :nextjournal/value 0.6423428764470548, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 3], :nextjournal/value -0.3211714382235274, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [9 :form], :nextjournal/value \"(q/asech quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value [{:path [10 :val 0], :nextjournal/value 0.10100342127309682, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 1], :nextjournal/value 0.13317213883832832, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 2], :nextjournal/value -0.06658606941916416, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 3], :nextjournal/value 0.03329303470958208, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [10 :form], :nextjournal/value \"(q/acsch quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value [{:path [11 :val 0], :nextjournal/value 0.09801052194400592, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 1], :nextjournal/value 0.1335957828157366, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 2], :nextjournal/value -0.0667978914078683, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [11 :val 3], :nextjournal/value 0.03339894570393415, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [11 :form], :nextjournal/value \"(q/acoth quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dszAubLruvsjTFtcyB2RFi6PDZjxf-result\"}}, :nextjournal/blob-id \"5dtzGiM8vt1KHzZnpgDAmvcWL8wYZJ\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dszAubLruvsjTFtcyB2RFi6PDZjxf-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dsgD1ycaQ7dNCKL7NjKgYwsAdoFsw\"} [\"h3\" {:id \"power-and-logarithm-2\"} [:<> \"Power and logarithm\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dsgD1ycaQ7dNCKL7NjKgYwsAdoFsw\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"sq\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"q^2\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"sqrt\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\sqrt{q}\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"pow\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"q^c\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"exp\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"e^q\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"log\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\operatorname{Log}(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}] [:<> \", principal value\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"logb\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [#viewer-eval nextjournal.clerk.render/inspect-presented {:nextjournal/value \"\\\\log_b(q)\", :nextjournal/viewer {:name :nextjournal.markdown/formula, :render-fn #viewer-fn (fn [tex] (nextjournal.clerk.render/render-katex tex {:inline? true})), :hash \"5dtTBivp9Yiw7XSqxv1opZHNencsu6\"}}]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsnSqdy16txA2m8qVBXWaStkSx4ax-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5dsWTsupXjRYhF8dfNoqXR8comHoB5\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5dsnSqdy16txA2m8qVBXWaStkSx4ax-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value -12.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value -24.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 2], :nextjournal/value 12.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 3], :nextjournal/value -6.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(q/sq quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 2.058789155675207, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value -0.9714447904909788, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 2], :nextjournal/value 0.4857223952454894, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 3], :nextjournal/value -0.2428611976227447, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(q/sqrt quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value -0.39727810863872637, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 1.4878473279452076, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value -0.7439236639726038, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 3], :nextjournal/value 0.3719618319863019, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(q/pow quaternion-3-4i+2j-1k quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value -2.60005269542841, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 17.384580348249628, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value -8.692290174124814, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 3], :nextjournal/value 4.346145087062407, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(q/exp quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 1.7005986908310777, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value -0.8651523967380913, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 2], :nextjournal/value 0.43257619836904565, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 3], :nextjournal/value -0.21628809918452283, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(q/log quaternion-3-4i+2j-1k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value -0.13769328046866777, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value -0.27538656093733554, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value -0.5507731218746711, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 3], :nextjournal/value -1.0826347514454877, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(q/logb quaternion-3-4i+2j-1k q/K)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtTDh387kqf97cp49icAr8ugXTBWJ-result\"}}, :nextjournal/blob-id \"5dsdVMFUEeiWiZqN5o6mCDosiSErmF\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtTDh387kqf97cp49icAr8ugXTBWJ-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dr5TyguDaahdHMckDJP4Zbm54boQ5\"} [\"h3\" {:id \"rotations\"} [:<> \"Rotations\"]] [:p [:<> \"3d rotations can be treated in many ways, two options are possible:\"]] [:ul [:li [:<> [:<> \"Euler angles, like presented in \"] [:a {:href \"https://en.wikipedia.org/wiki/Conversion_between_quaternions_and_Euler_angles\"} [:<> \"wiki\"]]]] [:li [:<> [:<> \"Tait-Bryan angles, to achieve the same result as OpenGL rotations\"]]]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dr5TyguDaahdHMckDJP4Zbm54boQ5\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value [{:path [0 0], :nextjournal/value \"symbol\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}} {:path [0 1], :nextjournal/value \"info\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-head-viewer, :render-fn #viewer-fn (fn [header-row {:as opts, :keys [path number-col?]}] [:thead (into [:tr] (map-indexed (fn [i {:as header-cell, :nextjournal/keys [value]}] (let [title (when (or (string? value) (keyword? value) (symbol? value)) value)] [:th.pl-6.pr-2.py-1.align-bottom.font-medium.top-0.z-10.bg-white.dark:bg-slate-900.border-b.border-gray-300.dark:border-slate-700 (cond-> {:class (when (and (ifn? number-col?) (number-col? i)) \"text-right\")} title (assoc :title title)) (nextjournal.clerk.render/inspect-presented opts header-cell)]))) header-row)]), :hash \"5dsuyZRvJwykvdxHCRoj1p24Ru4wYR\"}} {:path [1], :nextjournal/value [{:path [1 0], :nextjournal/value [{:path [1 0 0], :nextjournal/value \"rotation-quaternion\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 0 1], :nextjournal/value \"Create rotation quaternion around vector u and angle alpha\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 1], :nextjournal/value [{:path [1 1 0], :nextjournal/value \"rotate\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 1 1], :nextjournal/value [\"Rotate 3d `in` vector around axis `u` (the same as `fastmath.vector/axis-rotate`\" {:nextjournal/value {:n 80, :path [1 1 1], :total 81, :offset 80, :replace-path [1 1 1 80]}, :nextjournal/viewer {:name nextjournal.clerk.viewer/elision-viewer, :render-fn #viewer-fn (fn [{:as fetch-opts, :keys [total offset unbounded?]} {:keys [num-cols]}] [nextjournal.clerk.render/consume-view-context :fetch-fn (fn [fetch-fn] [:tr.border-t.dark:border-slate-700 [:td.py-1.relative {:col-span num-cols, :class (if (fn? fetch-fn) \"bg-indigo-50 hover:bg-indigo-100 dark:bg-gray-800 dark:hover:bg-slate-700 cursor-pointer\" \"text-gray-400 text-slate-500\"), :on-click (fn [_] (when (fn? fetch-fn) (fetch-fn fetch-opts)))} [:span.sticky {:style {:left \"min(50vw, 50%)\"}, :class \"-translate-x-1/2\"} (- total offset) (when unbounded? \"+\") (if (fn? fetch-fn) \" more…\" \" more elided\")]]])]), :hash \"5dqxAx2iq1zhgQLjcphjC5QTPj7uK6\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 2], :nextjournal/value [{:path [1 2 0], :nextjournal/value \"to-euler\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 2 1], :nextjournal/value \"Convert quaternion to Euler angles (ZYX, body 3-2-1), output: [roll, pitch, yaw]\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 3], :nextjournal/value [{:path [1 3 0], :nextjournal/value \"from-euler\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 3 1], :nextjournal/value \"Convert Euler angles ZYX representation, [roll, pitch, yaw] to quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 4], :nextjournal/value [{:path [1 4 0], :nextjournal/value \"to-angles\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 4 1], :nextjournal/value \"Convert quaternion to Tait–Bryan (z-y′-x\\\") angles, output: [x, y, z]\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 5], :nextjournal/value [{:path [1 5 0], :nextjournal/value \"from-angles\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 5 1], :nextjournal/value \"Convert Tait-Bryan (z-y′-x\\\") angles to quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 6], :nextjournal/value [{:path [1 6 0], :nextjournal/value \"to-rotation-matrix\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 6 1], :nextjournal/value \"Convert quaternion to a rotation matrix\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}} {:path [1 7], :nextjournal/value [{:path [1 7 0], :nextjournal/value \"from-rotation-matrix\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}} {:path [1 7 1], :nextjournal/value \"Convert rotation matrix to a quaternion\", :nextjournal/viewer {:name nextjournal.clerk.viewer/string-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-string, :page-size 80, :hash \"5dt3aDkKp71a96V8X8u4mDqsR21CU2\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-row-viewer, :render-fn #viewer-fn (fn [row {:as opts, :keys [path number-col?]}] (into [:tr.hover:bg-gray-200.dark:hover:bg-slate-700 {:class (if (even? (peek path)) \"bg-black/5 dark:bg-gray-800\" \"bg-white dark:bg-gray-900\")}] (map-indexed (fn [idx cell] [:td.pl-6.pr-2.py-1 (when (and (ifn? number-col?) (number-col? idx)) {:class \"text-right\"}) (nextjournal.clerk.render/inspect-presented opts cell)])) row)), :hash \"5dsNjQAhNnVDpLKK1uo1Ca3Fsk3MwM\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/table-body-viewer, :render-fn #viewer-fn (fn [rows opts] (into [:tbody] (map-indexed (fn [idx row] (nextjournal.clerk.render/inspect-presented (update opts :path conj idx) row))) rows)), :hash \"5dsefivD6wgJ7qkFYswJThKvfZ3x3P\"}}], :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5ds2Y1oqQv8jq2E5LZzMrVCZhJcnR1-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/table-markup-viewer, :render-fn #viewer-fn (fn [head+body opts] [:div (into [nextjournal.clerk.render/render-table-with-sticky-header] (nextjournal.clerk.render/inspect-children opts) head+body)]), :hash \"5drXFLdHZgfgZHMAR1nVZrHeF8oNVJ\"}}, :nextjournal/blob-id \"5ds8DBXoytpzbjdGnwG4EN2HRko5hr\"}, :nextjournal/width :wide, :nextjournal/render-opts {:num-cols 2, :number-col? #{}, :id \"complex-quaternion/anon-expr-5ds2Y1oqQv8jq2E5LZzMrVCZhJcnR1-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [{:path [0], :nextjournal/value {:val {:path [0 :val], :nextjournal/value [{:path [0 :val 0], :nextjournal/value 0.7071067811865476, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 1], :nextjournal/value 0.4999999999999999, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 2], :nextjournal/value 0.4999999999999999, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [0 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [0 :form], :nextjournal/value \"(q/rotation-quaternion m/HALF_PI [1 1 0])\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [1], :nextjournal/value {:val {:path [1 :val], :nextjournal/value [{:path [1 :val 0], :nextjournal/value 1.7071067811865475, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 1], :nextjournal/value 0.29289321881345254, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [1 :val 2], :nextjournal/value 4.440892098500626E-16, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [1 :form], :nextjournal/value \"(q/rotate [1 1 1] m/HALF_PI [1 1 0])\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [2], :nextjournal/value {:val {:path [2 :val], :nextjournal/value [{:path [2 :val 0], :nextjournal/value 1.7071067811865472, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 1], :nextjournal/value 0.2928932188134523, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [2 :val 2], :nextjournal/value 6.12323399538461E-17, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [2 :form], :nextjournal/value \"(v/axis-rotate (v/vec3 1 1 1) m/HALF_PI (v/vec3 1 1 0))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [3], :nextjournal/value {:val {:path [3 :val], :nextjournal/value [{:path [3 :val 0], :nextjournal/value 3.141592653589793, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 1], :nextjournal/value 1.5707963267948966, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [3 :val 2], :nextjournal/value 3.141592653589793, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [3 :form], :nextjournal/value \"(q/to-euler (q/quaternion m/SQRT2_2 0 m/SQRT2_2 0))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [4], :nextjournal/value {:val {:path [4 :val], :nextjournal/value [{:path [4 :val 0], :nextjournal/value 0.7071067811865476, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 2], :nextjournal/value 0.7071067811865475, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [4 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [4 :form], :nextjournal/value \"(q/from-euler 0 m/HALF_PI 0)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [5], :nextjournal/value {:val {:path [5 :val], :nextjournal/value [{:path [5 :val 0], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 1], :nextjournal/value 1.5707963267948966, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [5 :val 2], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [5 :form], :nextjournal/value \"(q/to-angles (q/quaternion m/SQRT2_2 0 m/SQRT2_2 0))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [6], :nextjournal/value {:val {:path [6 :val], :nextjournal/value [{:path [6 :val 0], :nextjournal/value 0.7071067811865476, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 1], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 2], :nextjournal/value 0.7071067811865475, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [6 :val 3], :nextjournal/value 0.0, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [6 :form], :nextjournal/value \"(q/from-angles 0 m/HALF_PI 0)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [7], :nextjournal/value {:val {:path [7 :val], :nextjournal/value [{:path [7 :val 0], :nextjournal/value 0.87954817941229, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 1], :nextjournal/value 1.2090975499501229, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [7 :val 2], :nextjournal/value 0.8743443914140103, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [7 :form], :nextjournal/value \"(q/rotate [1 1 1] (q/from-euler 0.1 0.2 0.3))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [8], :nextjournal/value {:val {:path [8 :val], :nextjournal/value [{:path [8 :val 0], :nextjournal/value 0.845333216753745, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 1], :nextjournal/value 1.1598509167731066, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [8 :val 2], :nextjournal/value 0.9696172458828022, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [8 :form], :nextjournal/value \"(q/rotate [1 1 1] (q/from-angles 0.1 0.2 0.3))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [9], :nextjournal/value {:val {:path [9 :val], :nextjournal/value [{:path [9 :val 0], :nextjournal/value 0.8453332167537448, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 1], :nextjournal/value 1.1598509167731064, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [9 :val 2], :nextjournal/value 0.9696172458828022, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [9 :form], :nextjournal/value \"(v/rotate (v/vec3 1 1 1) 0.1 0.2 0.3)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [10], :nextjournal/value {:val {:path [10 :val], :nextjournal/value [{:path [10 :val 0], :nextjournal/value 0.9818561728660808, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 1], :nextjournal/value 0.06407134770607116, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 2], :nextjournal/value 0.09115754934299075, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [10 :val 3], :nextjournal/value 0.1534393020242226, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [10 :form], :nextjournal/value \"(q/from-angles 0.1 0.2 0.3)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [11], :nextjournal/value {:val {:path [11 :val], :nextjournal/value \"#mat3x3 [[0.9362933635841996, -0.2896294776255157, 0.19866933079506138]\\n         [0.31299182578546814, 0.9447024859948946, -0.09784339500725572]\\n         [-0.15934507930797803, 0.15379199798896429, 0.9751703272018163]]\", :nextjournal/viewer {:name nextjournal.clerk.viewer/read+inspect-viewer, :render-fn #viewer-fn (fn [x] (try [nextjournal.clerk.render/inspect (nextjournal.clerk.viewer/read-string-without-tag-table x)] (catch js/Error _e (nextjournal.clerk.render/render-unreadable-edn x)))), :hash \"5draK8r6Qh96paK7hAAz4TKbfdrpV4\"}}, :form {:path [11 :form], :nextjournal/value \"(q/to-rotation-matrix (q/from-angles 0.1 0.2 0.3))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}} {:path [12], :nextjournal/value {:val {:path [12 :val], :nextjournal/value [{:path [12 :val 0], :nextjournal/value 0.981856172866081, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 1], :nextjournal/value 0.06407134770607117, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 2], :nextjournal/value 0.09115754934299071, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}} {:path [12 :val 3], :nextjournal/value 0.1534393020242226, :nextjournal/viewer {:name nextjournal.clerk.viewer/number-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-number, :hash \"5dr3R1ZvHCoRHpxsQq4D4ARv9BQC7o\"}}], :nextjournal/viewer {:name nextjournal.clerk.viewer/vector-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-coll, :opening-paren \"[\", :closing-paren \"]\", :page-size 20, :hash \"5dsD1KJESfc8Dy8gPeGQfZCX2ayE8f\"}}, :form {:path [12 :form], :nextjournal/value \"(q/from-rotation-matrix (mat/rotation-matrix-3d 0.1 0.2 0.3))\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}}, :nextjournal/viewer {:render-fn #viewer-fn (fn [{:keys [form val]} opts] [:div.flex.flex-wrap {:class \"py-[7px]\"} [:div [:div.bg-slate-100.px-2.rounded (nextjournal.clerk.render/inspect-presented opts form)]] [:div.flex.mt-1 [:div.mx-2.font-sans.text-xs.text-slate-500 {:class \"mt-[2px]\"} \"⇒\"] (nextjournal.clerk.render/inspect-presented opts val)]]), :hash \"5ds743FyQWkf2b4b8Z3eu6VsyDmzu1\"}}], :nextjournal/viewer {:render-fn #viewer-fn (fn [examples opts] (into [:div.border-l-2.border-slate-300.pl-4 [:div.uppercase.tracking-wider.text-xs.font-sans.text-slate-500.mt-4.mb-2 \"Examples\"]] (nextjournal.clerk.render/inspect-children opts) examples)), :hash \"5drXYjpMtPM3wu3HfEhFmWaJ1By2Fx\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtYhpWRh5e6QjztSVVJnTKTbnv9GN-result\"}}, :nextjournal/blob-id \"5dsJ4XMhqLNWdMVifc4M6ZbXx8RD9r\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5dtYhpWRh5e6QjztSVVJnTKTbnv9GN-result\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}} {:path [], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id \"complex-quaternion/markdown-5dsZMBhkXUXAjKzirJzzmFctnzkqLu\"} [\"h2\" {:id \"list-of-symbols-2\"} [:<> \"List of symbols\"]]], :nextjournal/render-opts {:id \"complex-quaternion/markdown-5dsZMBhkXUXAjKzirJzzmFctnzkqLu\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}} {:path [], :nextjournal/value {:nextjournal/presented {:path [], :nextjournal/value [:div [:div [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} \"fastmath.quaternion\"] \" namespace\"] [:p] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [0], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div ([:div {:class \"pb-8\", :id \"LOS--I\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [1], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} -I] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L21\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [2], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS--J\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [3], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} -J] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L22\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [4], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS--K\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [5], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} -K] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L23\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [6], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-I\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [7], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} I] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L18\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [8], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-J\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [9], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} J] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L19\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [10], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-K\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [11], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} K] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L20\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [12], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-ONE\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [13], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} ONE] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L17\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [14], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-ZERO\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [15], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} ZERO] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L16\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil nil [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [16], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acos\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [17], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acos] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L352\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [18], :nextjournal/value \"(acos q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [19], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acosh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [20], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acosh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L358\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [21], :nextjournal/value \"(acosh q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [22], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acot\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [23], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acot] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L356\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [24], :nextjournal/value \"(acot q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [25], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acoth\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [26], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acoth] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L362\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [27], :nextjournal/value \"(acoth q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [28], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acsc\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [29], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acsc] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L355\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [30], :nextjournal/value \"(acsc q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [31], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-acsch\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [32], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} acsch] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L361\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [33], :nextjournal/value \"(acsch q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [34], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-add\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [35], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} add] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L86\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [36], :nextjournal/value \"(add q1 q2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [37], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Sum of two quaternions\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-arg\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [38], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} arg] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L73\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [39], :nextjournal/value \"(arg quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [40], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Argument of quaternion, atan2(|vector(q)|, re(q))\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asec\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [41], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asec] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L354\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [42], :nextjournal/value \"(asec q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [43], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asech\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [44], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asech] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L360\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [45], :nextjournal/value \"(asech q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [46], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asin\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [47], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asin] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L351\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [48], :nextjournal/value \"(asin q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [49], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-asinh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [50], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} asinh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L357\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [51], :nextjournal/value \"(asinh q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [52], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-atan\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [53], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} atan] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L353\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [54], :nextjournal/value \"(atan q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [55], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-atanh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [56], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} atanh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L359\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [57], :nextjournal/value \"(atanh q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [58], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-complex->quaternion\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [59], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} complex->quaternion] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L31\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [60], :nextjournal/value \"(complex->quaternion z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [61], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Create quaternion from complex number\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-conjugate\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [62], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} conjugate] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L98\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [63], :nextjournal/value \"(conjugate quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [64], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Returns conjugate of quaternion\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-cos\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [65], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} cos] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L340\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [66], :nextjournal/value \"(cos q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [67], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-cosh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [68], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} cosh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L346\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [69], :nextjournal/value \"(cosh q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [70], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-cot\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [71], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} cot] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L344\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [72], :nextjournal/value \"(cot q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [73], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-coth\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [74], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} coth] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L350\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [75], :nextjournal/value \"(coth q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [76], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-csc\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [77], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} csc] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L343\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [78], :nextjournal/value \"(csc q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [79], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-csch\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [80], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} csch] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L349\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [81], :nextjournal/value \"(csch q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [82], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-delta-eq\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [83], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} delta-eq] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L66\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [84], :nextjournal/value \"(delta-eq q1 q2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [85], :nextjournal/value \"(delta-eq q1 q2 accuracy)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [86], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Compare quaternions with given accuracy (10e-6 by default)\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-div\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [87], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} div] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L131\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [88], :nextjournal/value \"(div q1 q2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [89], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Divide two quaternions\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-exp\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [90], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} exp] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L186\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [91], :nextjournal/value \"(exp q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [92], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-from-angles\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [93], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} from-angles] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L287\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [94], :nextjournal/value \"(from-angles [x y z])\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [95], :nextjournal/value \"(from-angles x y z)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [96], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Convert Tait–Bryan angles z-y′-x\\\" to quaternion.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-from-euler\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [97], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} from-euler] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L245\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [98], :nextjournal/value \"(from-euler [roll pitch yaw])\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [99], :nextjournal/value \"(from-euler roll pitch yaw)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [100], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Convert Euler ZYX (body 3-2-1) representation to quaternion\"]] [:p [:<> \"Input should be 3d vector contating roll (x), pitch (y) and yaw (z) angles, or individual values.\"]] [:ul [:li [:<> [:<> \"roll and yaw should be from \"] [:code [:<> \"[-pi, pi]\"]] [:<> \" range\"]]] [:li [:<> [:<> \"pitch should be from \"] [:code [:<> \"[-pi/2, pi/2]\"]] [:<> \" range\"]]]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-from-rotation-matrix\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [101], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} from-rotation-matrix] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L318\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [102], :nextjournal/value \"(from-rotation-matrix m)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [103], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Convert rotation 3x3 matrix to a quaternion\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-im-i\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [104], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} im-i] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L50\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [105], :nextjournal/value \"(im-i quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [106], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Return i imaginary part\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-im-j\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [107], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} im-j] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L51\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [108], :nextjournal/value \"(im-j quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [109], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Return j imaginary part\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-im-k\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [110], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} im-k] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L52\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [111], :nextjournal/value \"(im-k quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [112], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Return k imaginary part\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-imaginary?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [113], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} imaginary?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L55\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [114], :nextjournal/value \"(imaginary? quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [115], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is q is a pure imaginary number?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-inf?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [116], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} inf?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L57\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [117], :nextjournal/value \"(inf? quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [118], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is infinitive?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-log\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [119], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} log] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L187\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [120], :nextjournal/value \"(log q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [121], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-logb\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [122], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} logb] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L189\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [123], :nextjournal/value \"(logb quaternion b)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [124], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"log with base b\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-mult\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [125], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} mult] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L119\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [126], :nextjournal/value \"(mult q1 q2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [127], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Multiply two quaternions.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-nan?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [128], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} nan?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L61\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [129], :nextjournal/value \"(nan? quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [130], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is NaN?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-neg\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [131], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} neg] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L136\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [132], :nextjournal/value \"(neg quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [133], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Negation of quaternion.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-norm\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [134], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} norm] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L78\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [135], :nextjournal/value \"(norm quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [136], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Norm of the quaternion, length of the vector\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-normalize\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [137], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} normalize] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L82\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [138], :nextjournal/value \"(normalize quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [139], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Normalize quaternion\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-pow\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [140], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} pow] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L194\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [141], :nextjournal/value \"(pow q p)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [142], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Quaternion power\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-qsgn\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [143], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} qsgn] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L153\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [144], :nextjournal/value \"(qsgn re im-i im-j im-k)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [145], :nextjournal/value \"(qsgn q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [146], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"sgn of the quaternion.\"]] [:p [:<> \"Returns \"] [:code [:<> \"0\"]] [:<> \" for \"] [:code [:<> \"0+0i+0j+0k\"]] [:<> \" or calls \"] [:code [:<> \"m/sgn\"]] [:<> \" on real part otherwise.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-quaternion\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [147], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} quaternion] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L25\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [148], :nextjournal/value \"(quaternion a b c d)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [149], :nextjournal/value \"(quaternion scalar [i j k])\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [150], :nextjournal/value \"(quaternion a)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [151], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Create quaternion from individual values or scalar and vector parts, reprezented as \"] [:code [:<> \"Vec4\"]] [:<> \".\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-re\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [152], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} re] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L40\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [153], :nextjournal/value \"(re quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [154], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Returns scalar part of quaternion\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-real?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [155], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} real?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L54\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [156], :nextjournal/value \"(real? quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [157], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is q is a real number?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-reciprocal\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [158], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} reciprocal] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L106\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [159], :nextjournal/value \"(reciprocal quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [160], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-rotate\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [161], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} rotate] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L206\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [162], :nextjournal/value \"(rotate in rotq)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}] [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [163], :nextjournal/value \"(rotate in angle u)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [164], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Rotate 3d \"] [:code [:<> \"in\"]] [:<> \" vector around axis \"] [:code [:<> \"u\"]] [:<> \", the same as \"] [:code [:<> \"fastmath.vector/axis-rotate\"]] [:<> \".\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-rotation-quaternion\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [165], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} rotation-quaternion] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L199\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [166], :nextjournal/value \"(rotation-quaternion angle u)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [167], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Create rotation quaternion around vector u and angle alpha\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-scalar\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [168], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} scalar] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L36\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [169], :nextjournal/value \"(scalar quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [170], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Returns scalar part of quaternion, double\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-scale\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [171], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} scale] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L94\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [172], :nextjournal/value \"(scale quaternion scale)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [173], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Scale the quaternion\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sec\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [174], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sec] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L342\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [175], :nextjournal/value \"(sec q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [176], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sech\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [177], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sech] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L348\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [178], :nextjournal/value \"(sech q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [179], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sin\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [180], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sin] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L339\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [181], :nextjournal/value \"(sin q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [182], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sinh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [183], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sinh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L345\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [184], :nextjournal/value \"(sinh q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [185], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-slerp\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [186], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} slerp] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L217\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [187], :nextjournal/value \"(slerp q1 q2 t)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [188], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Interpolate quaternions\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sq\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [189], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sq] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L140\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [190], :nextjournal/value \"(sq quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [191], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Square of quaternion.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sqrt\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [192], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sqrt] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L185\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [193], :nextjournal/value \"(sqrt q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [194], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-sub\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [195], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} sub] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L90\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [196], :nextjournal/value \"(sub q1 q2)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [197], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Difference of two quaternions\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-tan\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [198], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} tan] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L341\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [199], :nextjournal/value \"(tan q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [200], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-tanh\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [201], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} tanh] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L347\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [202], :nextjournal/value \"(tanh q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [203], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil}], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-to-angles\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [204], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} to-angles] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L270\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [205], :nextjournal/value \"(to-angles q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [206], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Convert quaternion to Tait–Bryan angles, z-y′-x\\\".\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-to-euler\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [207], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} to-euler] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L227\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [208], :nextjournal/value \"(to-euler q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [209], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Convert quaternion to Euler ZYX (body 3-2-1). Quaternion will be normalized before calculations.\"]] [:p [:<> \"Output will contain roll (x), pitch (y) and yaw (z) angles.\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-to-rotation-matrix\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [210], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} to-rotation-matrix] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L305\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [211], :nextjournal/value \"(to-rotation-matrix q)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [212], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Convert quaternion to rotation 3x3 matrix\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-vector\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [213], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} vector] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L44\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [214], :nextjournal/value \"(vector quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [215], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Returns vector part of quaternion, \"] [:code [:<> \"Vec3\"]] [:<> \" type\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]] [:div {:class \"pb-8\", :id \"LOS-zero?\"} [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [216], :nextjournal/value [:span [:b {:class \"underline decoration-2 decoration-gray-400\"} zero?] nil nil [:sup [:a {:href \"https://github.com/generateme/fastmath/blob/master/src/fastmath/quaternion.clj#L56\"} \"  [source]\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}}] nil [:p] nil [:div [:div ([#viewer-eval nextjournal.clerk.render/inspect-presented {:path [217], :nextjournal/value \"(zero? quaternion)\", :nextjournal/render-opts {:language \"clojure\"}, :nextjournal/viewer {:name nextjournal.clerk.viewer/code-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-code, :hash \"5dsJQw12yyyd7TcZEf52VSHxnqnJUC\"}}])] [:p]] [:div [#viewer-eval nextjournal.clerk.render/inspect-presented {:path [218], :nextjournal/value [:div.viewer.markdown-viewer.w-full.max-w-prose.px-8 {:data-block-id nil} [:p [:<> \"Is zero?\"]]], :nextjournal/viewer {:name nextjournal.clerk.viewer/markdown-node-viewer, :render-fn #viewer-fn identity, :hash \"5dsg4Bx9A9L7WvvCgamUoRtxUsmYCe\"}}]]])]], :nextjournal/visibility {:code :hide, :result :show}, :nextjournal/viewer {:name nextjournal.clerk.viewer/html-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-html, :hash \"5drpr3yzJ1CcHNbRHnK2sVyn7YUmXB\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drFYGMTuU62E4VQm7rTNDq6tvR3Pk-result\"}}, :nextjournal/blob-id \"8VvZRyTLYpemM23KcNWzgMzRysPkhvEBNBmY256eC8PgQL1TPwEPrWQTGh76bSoPSDkxf3V7LJVhx8ZEdSbG8AJU9r\"}, :nextjournal/render-opts {:id \"complex-quaternion/anon-expr-5drFYGMTuU62E4VQm7rTNDq6tvR3Pk-result\"}, :nextjournal/visibility {:code :hide, :result :show}, :nextjournal/viewer {:name nextjournal.clerk.viewer/result-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-result, :hash \"5dtGVHesd2XCTLFYF3aY4kJvkrX1x1\"}}]}, :nextjournal/viewer {:name nextjournal.clerk.viewer/notebook-viewer, :render-fn #viewer-fn nextjournal.clerk.render/render-notebook, :hash \"5duAFDxE4sCnRX71Wo6zeCpC9C3djE\"}}}, :current-path \"notebooks/complex_quaternion\", :resource->url {\"/js/viewer.js\" \"https://storage.clerk.garden/nextjournal/clerk-assets@3mwzShgnuyfhgFN9ahRYKqV32K11/viewer.js?immutable=true\"}, :index #object[java.net.URL 0x263bc901 \"jar:file:/home/tsl/.m2/repository/io/github/nextjournal/clerk/0.15.957/clerk-0.15.957.jar!/nextjournal/clerk/index.clj\"]}".replaceAll('nextjournal.clerk.view/escape-closing-script-tag', 'script')
viewer.init(viewer.read_string(state))
</script></body></html>